| | |
| | | package logc |
| | | |
| | | import ( |
| | | "basic.com/valib/bhomebus.git" |
| | | "encoding/json" |
| | | "basic.com/valib/c_bhomebus.git/proto/source/bhome_msg" |
| | | "fmt" |
| | | "sync" |
| | | "time" |
| | |
| | | ) |
| | | |
| | | 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"` |
| | |
| | | } |
| | | |
| | | 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 { |
| | |
| | | } |
| | | |
| | | if msg == "" { |
| | | retrun |
| | | return |
| | | } |
| | | |
| | | log := &ScheduleLog{ |
| | |
| | | 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 |
| | |
| | | //} |
| | | |
| | | 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 { |
| | |
| | | |
| | | 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) |
| | | } |
| | | } |
| | | } |