zhangzengfei
2022-01-24 30a9ba339429593c552b31dbbfb4f67ed56ac466
logc.go
@@ -1,7 +1,7 @@
package logc
import (
   "basic.com/valib/bhomebus.git"
   "basic.com/valib/c_bhomebus.git/proto/source/bhome_msg"
   "fmt"
   "sync"
   "time"
@@ -16,20 +16,19 @@
)
const (
   TypeManual = iota + 1  //人工操作日志,系统升级,摄像机修改,算法修改...
   TypeLoginOut //登录登出日志
   TypePollInfo //轮巡摄像机及其对应的算法
   TypeStackInfo //数据栈处理情况
   TypeWarnInfo //故障信息
   TypeRunInfo //运行情况,gpu,mem,cpu
   TypeSysInfo //系统参数变更,ip,server name,开关机信息
   TypeManual    = iota + 1 //人工操作日志,系统升级,摄像机修改,算法修改...
   TypeLoginOut             //登录登出日志
   TypePollInfo             //轮巡摄像机及其对应的算法
   TypeStackInfo            //数据栈处理情况
   TypeWarnInfo             //故障信息
   TypeRunInfo              //运行情况,gpu,mem,cpu
   TypeSysInfo              //系统参数变更,ip,server name,开关机信息
)
type LogPrinter interface {
   Marshal() ([]byte, error)
   Topic() string
}
type LogInfo struct {
   ID        string `gorm:"column:id;primary_key;unique" json:"id"`
@@ -44,21 +43,21 @@
}
type LogRegister struct {
   Nodes      []bhomebus.NetNode
   Topic      string
   Payload     []byte
   Nodes   []bhome_msg.BHAddress
   Topic   string
   Payload []byte
}
type LogReportCallback func(*LogRegister)
var (
   logCh chan LogPrinter
   logger *Log
   logCh    chan LogPrinter
   logger   *Log
   ProcName string
   ProcID string
   ProcID   string
)
func Init(flogWriter LogReportCallback, log *Log, procId string, procName string, wg *sync.WaitGroup, done  chan struct{}) bool {
func Init(flogWriter LogReportCallback, log *Log, procId string, procName string, wg *sync.WaitGroup, done chan struct{}) bool {
   logCh = make(chan LogPrinter, 300)
   if nil != log {
@@ -108,7 +107,11 @@
   deliverLog(log, timeout)
}
func deliverLog(l LogPrinter, timeout time.Duration)  {
func SaveRuleServerLog(ruleServerPushLog RuleServerPushLog, timeout time.Duration) {
   deliverLog(&ruleServerPushLog, timeout)
}
func deliverLog(l LogPrinter, timeout time.Duration) {
   select {
   case logCh <- l:
      return
@@ -160,11 +163,13 @@
//}
const (
   OperationLogTopic = "operationLogSaveTopic"
   ScheduleLogTopic = "scheduleLogSaveTopic"
   OperationLogTopic  = "operationLogSaveTopic"
   ScheduleLogTopic   = "scheduleLogSaveTopic"
   RuleServerLogTopic = "ruleServerLogSaveTopic"
   VaSystemLogTopic   = "VaSystemLogSaveTopic"
)
func saveLoop(logCallback LogReportCallback, wg *sync.WaitGroup, done  chan struct{}) {
func saveLoop(logCallback LogReportCallback, wg *sync.WaitGroup, done chan struct{}) {
   defer wg.Done()
   if nil == logCallback {
@@ -173,23 +178,23 @@
   for {
      select {
      case <- done:
      case <-done:
         return
      case log := <- logCh:
      case log := <-logCh:
         payload, err := log.Marshal()
         if err != nil {
            logger.Error("failed to Marshal", log)
         } else {
               var nodes []bhomebus.NetNode
               nodes = append(nodes, bhomebus.NetNode{})
            var nodes []bhome_msg.BHAddress
            nodes = append(nodes, bhome_msg.BHAddress{})
               reg := &LogRegister {
                  nodes,
                  log.Topic(),
                  payload,
               }
            reg := &LogRegister{
               nodes,
               log.Topic(),
               payload,
            }
               logCallback(reg)
            logCallback(reg)
         }
      }
   }