From c5c00e3a4caf6f3cd55a5e679a218dacd0e6de2d Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期一, 18 一月 2021 19:51:37 +0800
Subject: [PATCH] 增加sock之外的bus推送函数指针模式,方便使用
---
logc.go | 79 ++++++++++++++++++++++++++-------------
1 files changed, 52 insertions(+), 27 deletions(-)
diff --git a/logc.go b/logc.go
index 7b21d31..79462d9 100644
--- a/logc.go
+++ b/logc.go
@@ -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 {
@@ -42,35 +42,55 @@
var (
msgChan chan []byte
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 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 Save(level int, logType int,template string, v ...interface{}) {
- cache(level, logType, "", "", template, v)
-}
-
-func SaveManual(level int, logType int, userID string, userName string, template string, v ...interface{}) {
- cache(level, logType, userID, userName, template, v)
-}
-
-func cache(level int, logType int, userID string, userName string, template string, fmtArgs []interface{}) {
- // Format with Sprint, Sprintf, or neither.
- msg := template
- if msg == "" && len(fmtArgs) > 0 {
- msg = fmt.Sprint(fmtArgs...)
- } else if msg != "" && len(fmtArgs) > 0 {
- msg = fmt.Sprintf(template, fmtArgs...)
+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)
+}
+
+func SaveManual(level int, logType int, userID string, userName string, v ...interface{}) {
+ cache(level, logType, userID, userName, v)
+}
+
+func cache(level int, logType int, userID string, userName string, fmtArgs []interface{}) {
+ // Format with Sprint, Sprintf, or neither.
+ msg := ""
+ if len(fmtArgs) > 0 {
+ msg = fmt.Sprint(fmtArgs...)
+ }
+ fmt.Println(msg)
log := LogInfo {
ID: uuid.NewV4().String(),
@@ -102,10 +122,15 @@
select {
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{})
+ if bhSock != nil {
+ bhSock.PubTimeout(nodes, LogSaveTopic, data, 1000)
+ } else if pubFn != nil {
+ pubFn(nodes, LogSaveTopic, data, 1000)
+ } else {
+ fmt.Println("bhSock nil and pubFn nil")
+ }
+
default:
time.Sleep(10*time.Millisecond)
}
--
Gitblit v1.8.0