From 09a13020cc8810839af97afc28ab62cd83a0f344 Mon Sep 17 00:00:00 2001
From: yanghui <yanghui@aiotlink.com>
Date: 星期一, 26 四月 2021 11:04:42 +0800
Subject: [PATCH] logc
---
logc.go | 91 ++++++++++++++++++++++++++++++++++++---------
1 files changed, 72 insertions(+), 19 deletions(-)
diff --git a/logc.go b/logc.go
index 99ce25d..494c91f 100644
--- a/logc.go
+++ b/logc.go
@@ -2,10 +2,10 @@
import (
"basic.com/valib/bhomebus.git"
-
"encoding/json"
"fmt"
uuid "github.com/satori/go.uuid"
+ "sync"
"time"
)
@@ -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 {
@@ -39,21 +39,62 @@
Info string `gorm:"column:info" json:"info"` // 璇︽儏
}
+type LogRegister struct {
+ Nodes []bhomebus.NetNode
+ Topic string
+ Payload []byte
+}
+
+type LogReportCallback func(*LogRegister)
+
var (
msgChan chan []byte
- bhSock *bhomebus.Socket
+ //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 Init(flogWriter LogReportCallback, procId string, procName string, wg *sync.WaitGroup, done chan struct{}) bool {
msgChan = make(chan []byte, 100)
ProcName = procName
ProcID = procId
- bhSock = sock
- go saveLoop()
+ go saveLoop(flogWriter, wg, done)
+
+ return true
}
+
+//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 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)
@@ -96,19 +137,31 @@
LogSaveTopic = "logSaveTopic"
)
-func saveLoop() {
+func saveLoop(logCallback LogReportCallback, wg *sync.WaitGroup, done chan struct{}) {
+ defer wg.Done()
+
+ if nil == logCallback {
+ return
+ }
+
for {
select {
+ case <- done:
+ return
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{})
+
+ reg := &LogRegister {
+ nodes,
+ LogSaveTopic,
+ data,
+ }
+
+ logCallback(reg)
+
default:
time.Sleep(10*time.Millisecond)
}
}
}
-
-
--
Gitblit v1.8.0