From 59ac3141ef3e9eb741c2927a7adfd3cb52b21741 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期二, 31 八月 2021 15:03:39 +0800
Subject: [PATCH] use fjt c_bhomebus

---
 logc.go |   72 ++++++++++++++++++------------------
 1 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/logc.go b/logc.go
index 5946d85..7ae7c50 100644
--- a/logc.go
+++ b/logc.go
@@ -1,8 +1,7 @@
 package logc
 
 import (
-	"basic.com/valib/bhomebus.git"
-	"encoding/json"
+	"basic.com/valib/c_bhomebus.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,16 +52,14 @@
 type LogReportCallback func(*LogRegister)
 
 var (
-	opChan chan *OperationLog
-	schedualeChan chan *ScheduleLog
+	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)
-	schedualeChan = make(chan *ScheduleLog)
+	logCh = make(chan LogPrinter, 300)
 
 	if nil != log {
 		logger = log
@@ -80,17 +83,7 @@
 	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)
-	}
+	deliverLog(log, timeout)
 }
 
 func SaveScheduleLog(category, level int, timeout time.Duration, v ...interface{}) {
@@ -100,7 +93,7 @@
 	}
 
 	if msg == "" {
-		retrun
+		return
 	}
 
 	log := &ScheduleLog{
@@ -112,19 +105,26 @@
 		Info:      msg,
 	}
 
+	deliverLog(log, timeout)
+}
+
+func SaveRuleServerLog(ruleServerPushLog RuleServerPushLog, timeout time.Duration) {
+	deliverLog(&ruleServerPushLog, timeout)
+}
+
+func deliverLog(l LogPrinter, timeout time.Duration) {
 	select {
-	case schedualeChan <- 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("SaveScheduleLog failed to save log", info)
+		logger.Fatal("SaveScheduleLog failed to save log", info, l.Topic())
 	}
 }
-
 
 //func Save(level int, logType int, v ...interface{}) {
 //	cache(level, logType, "", "", v)
@@ -165,6 +165,8 @@
 
 const (
 	OperationLogTopic = "operationLogSaveTopic"
+	ScheduleLogTopic = "scheduleLogSaveTopic"
+	RuleServerLogTopic = "ruleServerLogSaveTopic"
 )
 
 func saveLoop(logCallback LogReportCallback, wg *sync.WaitGroup, done  chan struct{}) {
@@ -178,24 +180,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