From af04d69d231872447e0358aed8f848cf5bc1f93a Mon Sep 17 00:00:00 2001
From: yanghui <yanghui@aiotlink.com>
Date: 星期二, 27 四月 2021 13:37:42 +0800
Subject: [PATCH] add schedule log
---
logc.go | 76 +++++++++++++++++++++++++++++++++-----
1 files changed, 66 insertions(+), 10 deletions(-)
diff --git a/logc.go b/logc.go
index 7eddc7e..5946d85 100644
--- a/logc.go
+++ b/logc.go
@@ -48,26 +48,82 @@
var (
opChan chan *OperationLog
-
+ schedualeChan chan *ScheduleLog
+ logger *Log
+ ProcName string
+ ProcID string
)
-
-func Init(flogWriter LogReportCallback, 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 {
opChan = make(chan *OperationLog, 100)
- //ProcName = procName
- //ProcID = procId
+ schedualeChan = make(chan *ScheduleLog)
+
+ if nil != log {
+ logger = log
+ } else {
+ logger = &Log{}
+ }
+
+ ProcName = procName
+ ProcID = procId
go saveLoop(flogWriter, wg, done)
return true
}
-func SaveOperationLog(log *OperationLog) {
- if nil != log {
- opChan <- log
+func SaveOperationLog(log *OperationLog, timeout time.Duration) {
+ if nil == log {
+ return
+ }
+
+ log.ProcName = ProcName
+ log.ProcID = ProcID
+
+ select {
+ case opChan <- log:
+ return
+ case <-time.After(timeout):
+ var info string
+ b, err := json.Marshal(log)
+ if nil == err {
+ info = string(b)
+ }
+ logger.Fatal("SaveOperationLog failed to save log", info)
}
}
+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)
+ }
+}
//func Save(level int, logType int, v ...interface{}) {
@@ -108,7 +164,7 @@
//}
const (
- LogSaveTopic = "logSaveTopic"
+ OperationLogTopic = "operationLogSaveTopic"
)
func saveLoop(logCallback LogReportCallback, wg *sync.WaitGroup, done chan struct{}) {
@@ -132,7 +188,7 @@
reg := &LogRegister {
nodes,
- LogSaveTopic,
+ OperationLogTopic,
payload,
}
--
Gitblit v1.8.0