前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyGBS后台操作日志功能实现方式分享

EasyGBS后台操作日志功能实现方式分享

原创
作者头像
TSINGSEE青犀视频
修改2021-09-18 14:49:09
3790
修改2021-09-18 14:49:09
举报
文章被收录于专栏:TSINGSEE青犀视频

作为支持国标GB28181协议的视频平台,EasyGBS经常被拿来用作下级平台或者上级平台于客户现场的第三方平台进行级联,稳定性高、扩展性强也是EasyGBS级联过程中一个显著的特点。为了能够更好的监测EasyGBS的服务正常运作,以及记录各用户的操作记录。并及时的发现失误操作的入口,定位错误原因,我们决定增加一个展示后台操作日志的功能。

本文分享一下我们的实现方式。我们通过在表中增加一个操作日志表格来获取后台运行的各项信息,该表内将会详细展示系统运行的IP、操作、返回的信息以及运行时间,将每一步精准定位。

添加该数据表后,前端界面显示如下:

以下是我们部分接口代码,大家可以参考下:

代码语言:javascript
复制
//插入记录
func InsertOperation(operation *models.Operation) error {
	return database.Create(operation).Error
}
//获取所有操作记录
func GetAllOperation() ([]models.Operation, error) {
	var operations []models.Operation
	err := database.Find(&operations).Error
	return operations, err
}

func GetOperationCount() int {
	var count int
	database.Model(models.Operation{}).Count(&count)
	return count
}
//根据条件获取记录
func GetOperations(req OperationReq) ([]models.Operation, error) {
	var operations []models.Operation
	table := database.Table(models.Operation{}.TableName())
	if req.Type != "" {
		table = table.Where("operation_type = ?", req.Type)
	}
	if req.Start != 0 {
		table = table.Offset(req.Start)
	}
	if req.StartTime != "" {
		start, err := time.ParseInLocation(etime.DateTimeLayout, req.StartTime, time.Local)
		if err != nil {
			return operations, errors.New("开始时间有误")
		}
		table = table.Where("operation_time >= ?", start)
	}
	if req.StartTime != "" {
		end, err := time.ParseInLocation(etime.DateTimeLayout, req.EndTime, time.Local)
		if err != nil {
			return operations, errors.New("结束时间有误")
		}
		table = table.Where("operation_time <= ?", end)
	}
	if req.Limit != 0 {
		table = table.Limit(req.Limit)
	}
	err := table.Find(&operations).Error
	return operations, err
}
//获取单条操作记录
func GetOneOperation(id int) (models.Operation, error) {
	var operation models.Operation
	err := database.Where("id = ?", id).Find(&operation).Error
	return operation, err
}
//删除单条记录
func DeleteOneOperation(id int) error {
	return database.Where("id = ?", id).Delete(models.Operation{}).Error
}
//清空记录表
func TruncateOperation() error {
	sec := utils.Conf().Section("database")
	dbName := sec.Key("db_name").MustString("sqlite3")
	switch dbName {
	case "sqlite3":
		return database.Delete(models.Operation{}).Error
	case "mysql":
		return database.Raw("truncate table ?", models.Operation{}.TableName()).Error
	}
	return errors.New("error database engine")
}

EasyGBS作为国标协议下稳定完善的视频平台,具备国标协议视频通道接入、转码、分发、直播的能力,目前与智能分析功能的结合也在紧密研发和测试当中,欢迎大家下载测试。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档