From 6c71ed49668ae5e7711b337d57051f82a3dd65cc Mon Sep 17 00:00:00 2001
From: haozhifeng <haozhifeng>
Date: 星期三, 30 六月 2021 18:54:30 +0800
Subject: [PATCH] 新增字段AddTime
---
logc.go | 88 +++++++++++++++++++++++++++++--------------
1 files changed, 59 insertions(+), 29 deletions(-)
diff --git a/logc.go b/logc.go
index c08fc81..b5fd920 100644
--- a/logc.go
+++ b/logc.go
@@ -1,8 +1,7 @@
package logc
import (
- "basic.com/valib/bhomebus.git"
- "encoding/json"
+ "basic.com/valib/bhshmq.git/proto/source/bhome_msg"
"fmt"
"sync"
"time"
@@ -26,6 +25,12 @@
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"`
Timestamp string `gorm:"column:timestamp" json:"timestamp"` // 2020-12-03 14:39:41
@@ -39,7 +44,7 @@
}
type LogRegister struct {
- Nodes []bhomebus.NetNode
+ Nodes []bhome_msg.BHAddress
Topic string
Payload []byte
}
@@ -47,21 +52,23 @@
type LogReportCallback func(*LogRegister)
var (
- opChan chan *OperationLog
+ logCh chan LogPrinter
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)
+ logCh = make(chan LogPrinter, 300)
+
if nil != log {
logger = log
} else {
logger = &Log{}
}
- //ProcName = procName
- //ProcID = procId
+ ProcName = procName
+ ProcID = procId
go saveLoop(flogWriter, wg, done)
@@ -73,23 +80,47 @@
return
}
+ log.ProcName = ProcName
+ log.ProcID = ProcID
+
+ deliverLog(log, timeout)
+}
+
+func SaveScheduleLog(category, level int, timeout time.Duration, v ...interface{}) {
+ msg := ""
+ if len(v) > 0 {
+ msg = fmt.Sprint(v...)
+ }
+
+ if msg == "" {
+ return
+ }
+
+ log := &ScheduleLog{
+ Timestamp: time.Now().Unix(),
+ ProcName: ProcName,
+ ProcID: ProcID,
+ Level: level,
+ Type: category,
+ Info: msg,
+ }
+
+ deliverLog(log, timeout)
+}
+
+func deliverLog(l LogPrinter, timeout time.Duration) {
select {
- case opChan <- log:
+ case logCh <- l:
return
case <-time.After(timeout):
var info string
- b, err := json.Marshal(log)
+ b, err := l.Marshal()
if nil == err {
info = string(b)
}
- logger.Fatal("SaveOperationLog failed to save log", info)
+ logger.Fatal("SaveScheduleLog failed to save log", info, l.Topic())
}
}
-
-func SaveScheduleLog(category, level int, msg string) {
-
-}
-
//func Save(level int, logType int, v ...interface{}) {
// cache(level, logType, "", "", v)
@@ -130,6 +161,7 @@
const (
OperationLogTopic = "operationLogSaveTopic"
+ ScheduleLogTopic = "scheduleLogSaveTopic"
)
func saveLoop(logCallback LogReportCallback, wg *sync.WaitGroup, done chan struct{}) {
@@ -143,24 +175,22 @@
select {
case <- done:
return
- case data := <- opChan:
- payload, err := json.Marshal(data)
+ case log := <- logCh:
+ payload, err := log.Marshal()
if err != nil {
- fmt.Println("json.Marshal(operation data) error:", data)
+ 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,
- OperationLogTopic,
- payload,
- }
+ reg := &LogRegister {
+ nodes,
+ log.Topic(),
+ payload,
+ }
- logCallback(reg)
+ logCallback(reg)
}
- default:
- time.Sleep(10*time.Millisecond)
}
}
}
--
Gitblit v1.8.0