From 54796f5e2227764ef21449c2ddb0593d092bd6aa Mon Sep 17 00:00:00 2001
From: yanghui <yanghui@aiotlink.com>
Date: 星期一, 26 四月 2021 17:17:49 +0800
Subject: [PATCH] complete log
---
logc.go | 28 +++++++++++--
log.go | 54 +++++++++++++++++++++++++++
2 files changed, 77 insertions(+), 5 deletions(-)
diff --git a/log.go b/log.go
new file mode 100644
index 0000000..468829b
--- /dev/null
+++ b/log.go
@@ -0,0 +1,54 @@
+package logc
+
+import "fmt"
+
+type printer func (v ...interface{})
+
+type logPrinter interface {
+ Fatal(v ...interface{})
+
+ Error(v ...interface{})
+
+ Warn(v ...interface{})
+
+ Info(v ...interface{})
+}
+
+type Log struct {
+ FatalLog printer
+ ErrorLog printer
+ WarnLog printer
+ InfoLog printer
+}
+
+func (p Log)Fatal(v ...interface{}) {
+ if nil == p.FatalLog {
+ fmt.Println(v...)
+ } else {
+ p.FatalLog(v...)
+ }
+}
+
+func (p Log)Error(v ...interface{}) {
+ if nil == p.ErrorLog {
+ fmt.Println(v...)
+ } else {
+ p.ErrorLog(v...)
+ }
+}
+
+func (p Log)Warn(v ...interface{}) {
+ if nil == p.WarnLog {
+ fmt.Println(v...)
+ } else {
+ p.WarnLog(v...)
+ }
+}
+
+func (p Log)Info(v ...interface{}) {
+ if nil == p.InfoLog {
+ fmt.Println(v...)
+ } else {
+ p.InfoLog(v...)
+ }
+}
diff --git a/logc.go b/logc.go
index 7eddc7e..dca99a3 100644
--- a/logc.go
+++ b/logc.go
@@ -48,12 +48,18 @@
var (
opChan chan *OperationLog
-
+ logger *Log
)
-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)
+ if nil != log {
+ logger = log
+ } else {
+ logger = &Log{}
+ }
+
//ProcName = procName
//ProcID = procId
@@ -62,9 +68,21 @@
return true
}
-func SaveOperationLog(log *OperationLog) {
- if nil != log {
- opChan <- log
+func SaveOperationLog(log *OperationLog, timeout time.Duration) {
+ if nil == log {
+ return
+ }
+
+ 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)
}
}
--
Gitblit v1.8.0