a6b4130e2a9f41f95aa5e0c53ca369ae7aec2d35..af04d69d231872447e0358aed8f848cf5bc1f93a
2021-04-27 yanghui
add schedule log
af04d6 对比 | 目录
2021-04-27 yanghui
filter
d365ad 对比 | 目录
2个文件已修改
1个文件已添加
56 ■■■■■ 已修改文件
logc.go 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
operationlog.go 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
scheduleLog.go 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
logc.go
@@ -48,20 +48,24 @@
var (
    opChan chan *OperationLog
    schedualeChan chan *ScheduleLog
    logger *Log
    ProcName string
    ProcID string
)
func Init(flogWriter LogReportCallback, log *Log, procId string, procName string, wg *sync.WaitGroup, done  chan struct{}) bool {
    opChan = make(chan *OperationLog, 100)
    schedualeChan = make(chan *ScheduleLog)
    if nil != log {
        logger = log
    } else {
        logger = &Log{}
    }
    //ProcName = procName
    //ProcID = procId
    ProcName = procName
    ProcID = procId
    go saveLoop(flogWriter, wg, done)
@@ -72,6 +76,9 @@
    if nil == log {
        return
    }
    log.ProcName = ProcName
    log.ProcID = ProcID
    select {
    case opChan <- log:
@@ -86,8 +93,36 @@
    }
}
func SaveScheduleLog(category, level int, timeout time.Duration, msg string) {
func SaveScheduleLog(category, level int, timeout time.Duration, v ...interface{}) {
    msg := ""
    if len(v) > 0 {
        msg = fmt.Sprint(v...)
    }
    if msg == "" {
        retrun
    }
    log := &ScheduleLog{
        Timestamp: time.Now().Unix(),
        ProcName:  ProcName,
        ProcID:    ProcID,
        Level:     level,
        Type:      category,
        Info:      msg,
    }
    select {
    case schedualeChan <- log:
        return
    case <-time.After(timeout):
        var info string
        b, err := json.Marshal(log)
        if nil == err {
            info = string(b)
        }
        logger.Fatal("SaveScheduleLog failed to save log", info)
    }
}
operationlog.go
@@ -5,6 +5,8 @@
    Timestamp int64  `gorm:"column:timestamp" json:"timestamp"`                   // 时间戳Unix time
    UserName  string `gorm:"column:userName" json:"userName"`                     // 用户名字
    Module    string `gorm:"column:module" json:"module"`                         // 模块
    ProcName  string `gorm:"column:procName" json:"procName"`
    ProcID    string `gorm:"column:procID" json:"procID"`
    Function  string `gorm:"column:function" json:"function"`                     // 功能
    Result    string `gorm:"column:result" json:"result"`                         // 操作结果
    Para      string `gorm:"column:para" json:"para"`                             // 参数
scheduleLog.go
New file
@@ -0,0 +1,11 @@
package logc
type ScheduleLog struct {
    ID        string `gorm:"column:id;primaryKey;unique;autoIncrement" json:"id"` // 主键id
    Timestamp int64  `gorm:"column:timestamp" json:"timestamp"`                   // 时间戳Unix time
    ProcName  string `gorm:"column:procName" json:"procName"`
    ProcID    string `gorm:"column:procID" json:"procID"`
    Level     int    `gorm:"column:level" json:"level"`       // 日志等级
    Type      int    `gorm:"column:type" json:"type"`         // 操作类型:人工操作,登录退出,轮循摄像机及对应算法,数据栈处理情况,异常情况等
    Info      string `gorm:"column:info" json:"info"`         // 详情
}