chenshijun
2021-01-18 c5c00e3a4caf6f3cd55a5e679a218dacd0e6de2d
logc.go
@@ -18,13 +18,13 @@
)
const (
   TypeManual = iota + 1
   TypeLoginOut
   TypePollInfo
   TypeStackInfo
   TypeWarnInfo
   TypeRunInfo
   TypeSysInfo
   TypeManual = iota + 1  //人工操作日志,系统升级,摄像机修改,算法修改...
   TypeLoginOut //登录登出日志
   TypePollInfo //轮巡摄像机及其对应的算法
   TypeStackInfo //数据栈处理情况
   TypeWarnInfo //故障信息
   TypeRunInfo //运行情况,gpu,mem,cpu
   TypeSysInfo //系统参数变更,ip,server name,开关机信息
)
type LogInfo struct {
@@ -42,35 +42,55 @@
var (
   msgChan chan []byte
   bhSock *bhomebus.Socket
   pubFn func(nodes []bhomebus.NetNode, topic string, data []byte, milliseconds int) int
   ProcName string
   ProcID string
)
func Init(sock *bhomebus.Socket, procId string, procName string) {
func InitBySock(sock *bhomebus.Socket, procId string, procName string) bool {
   msgChan = make(chan []byte, 100)
   ProcName = procName
   ProcID = procId
   bhSock = sock
   if bhSock == nil {
      return false
   }
   go saveLoop()
   return true
}
func Save(level int, logType int,template string, v ...interface{}) {
   cache(level, logType, "", "", template, v)
}
func SaveManual(level int, logType int, userID string, userName string, template string, v ...interface{}) {
   cache(level, logType, userID, userName, template, v)
}
func cache(level int, logType int, userID string, userName string, template string, fmtArgs []interface{}) {
   // Format with Sprint, Sprintf, or neither.
   msg := template
   if msg == "" && len(fmtArgs) > 0 {
      msg = fmt.Sprint(fmtArgs...)
   } else if msg != "" && len(fmtArgs) > 0 {
      msg = fmt.Sprintf(template, fmtArgs...)
func InitByPubFn(fn func(nodes []bhomebus.NetNode, topic string, data []byte, milliseconds int) int,
            procId string, procName string) bool {
   msgChan = make(chan []byte, 100)
   ProcName = procName
   ProcID = procId
   pubFn = fn
   if pubFn == nil {
      return false
   }
   go saveLoop()
   return true
}
func Save(level int, logType int, v ...interface{}) {
   cache(level, logType, "", "", v)
}
func SaveManual(level int, logType int, userID string, userName string, v ...interface{}) {
   cache(level, logType, userID, userName, v)
}
func cache(level int, logType int, userID string, userName string, fmtArgs []interface{}) {
   // Format with Sprint, Sprintf, or neither.
   msg := ""
   if len(fmtArgs) > 0 {
      msg = fmt.Sprint(fmtArgs...)
   }
   fmt.Println(msg)
   log := LogInfo {
      ID:        uuid.NewV4().String(),
@@ -102,10 +122,15 @@
      select {
      case data := <- msgChan:
         var nodes []bhomebus.NetNode
         nodes = append(nodes, bhomebus.NetNode{
            Key: 8,
         })
         bhSock.PubTimeout(nodes, LogSaveTopic, data, 1000)
         nodes = append(nodes, bhomebus.NetNode{})
         if bhSock != nil {
            bhSock.PubTimeout(nodes, LogSaveTopic, data, 1000)
         } else if pubFn != nil {
            pubFn(nodes, LogSaveTopic, data, 1000)
         } else {
            fmt.Println("bhSock nil and pubFn nil")
         }
      default:
         time.Sleep(10*time.Millisecond)
      }