From 9fc8aaf3af0a179dbb2e614496d39c922661de4a Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期三, 23 十月 2019 17:57:54 +0800
Subject: [PATCH] 改造日志的输出方式
---
labelFilter/req.go | 2
insertdata/EsClient.go | 2
logger/logger.go | 225 +++++++++++++++++++++++++++++++++++++++++++++
insertdata/insertDataToEs.go | 2
ruleserver/server.go | 2
ruleserver/ruleToformula.go | 2
main.go | 3
ruleserver/personTrack.go | 2
labelFilter/readyDataForLabel.go | 2
labelFilter/ruleForLabel.go | 2
ruleserver/readyDataForRule.go | 2
ruleserver/timeTicker.go | 2
12 files changed, 237 insertions(+), 11 deletions(-)
diff --git a/insertdata/EsClient.go b/insertdata/EsClient.go
index 6ecd30a..c83eb87 100644
--- a/insertdata/EsClient.go
+++ b/insertdata/EsClient.go
@@ -7,7 +7,7 @@
"io"
"io/ioutil"
"net/http"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"strconv"
"strings"
"time"
diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go
index 99dc7f9..f5804c4 100644
--- a/insertdata/insertDataToEs.go
+++ b/insertdata/insertDataToEs.go
@@ -1,7 +1,7 @@
package insertdata
import (
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"encoding/base64"
"encoding/json"
"errors"
diff --git a/labelFilter/readyDataForLabel.go b/labelFilter/readyDataForLabel.go
index c7f405d..0c99550 100644
--- a/labelFilter/readyDataForLabel.go
+++ b/labelFilter/readyDataForLabel.go
@@ -1,7 +1,7 @@
package labelFilter
import (
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"ruleprocess/cache"
"ruleprocess/structure"
"time"
diff --git a/labelFilter/req.go b/labelFilter/req.go
index dd34d69..2fab521 100644
--- a/labelFilter/req.go
+++ b/labelFilter/req.go
@@ -1,7 +1,7 @@
package labelFilter
import (
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"fmt"
"github.com/golang/protobuf/proto"
"nanomsg.org/go-mangos"
diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go
index 3b03b8d..23b27da 100644
--- a/labelFilter/ruleForLabel.go
+++ b/labelFilter/ruleForLabel.go
@@ -3,7 +3,7 @@
import (
"basic.com/dbapi.git"
"basic.com/pubsub/protomsg.git"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"github.com/knetic/govaluate"
"ruleprocess/structure"
"strconv"
diff --git a/logger/logger.go b/logger/logger.go
new file mode 100644
index 0000000..dce391b
--- /dev/null
+++ b/logger/logger.go
@@ -0,0 +1,225 @@
+package logger
+
+import (
+ "fmt"
+ "log"
+ "os"
+ "os/exec"
+ "strings"
+ "time"
+)
+
+const (
+ PanicLevel int = iota
+ FatalLevel
+ ErrorLevel
+ WarnLevel
+ InfoLevel
+ DebugLevel
+)
+var loggerString string = ""
+const (
+ color_red = uint8(iota + 91)
+ color_green // 缁�
+ color_yellow // 榛�
+ color_blue // 钃�
+ color_magenta // 娲嬬孩
+)
+
+const (
+ fatalPrefix = "[FATAL] "
+ errorPrefix = "[ERROR] "
+ warnPrefix = "[WARN] "
+ infoPrefix = "[INFO] "
+ debugPrefix = "[DEBUG] "
+)
+
+const (
+ ByDay int = iota
+ ByWeek
+ ByMonth
+ BySize
+)
+
+type LogFile struct {
+ level int // 鏃ュ織绛夌骇
+ saveMode int // 淇濆瓨妯″紡
+ saveDays int // 鏃ュ織淇濆瓨澶╂暟
+ logTime int64 //
+ fileName string // 鏃ュ織鏂囦欢鍚�
+ filesize int64 // 鏂囦欢澶у皬, 闇�瑕佽缃� saveMode 涓� BySize 鐢熸晥
+ fileFd *os.File
+}
+
+var logFile LogFile
+
+func init() {
+ logFile.saveMode = ByDay // 榛樿鎸夊ぉ淇濆瓨
+ logFile.saveDays = 7 // 榛樿淇濆瓨涓夊ぉ鐨�
+ logFile.level = DebugLevel
+ //logFile.filesize = 1024 * 1024 * 10 // 榛樿10M锛� 闇�瑕佽缃� saveMode 涓� BySize
+}
+
+func Config(logFolder string, level int) {
+ logFile.fileName = logFolder
+ logFile.level = level
+
+ log.SetOutput(logFile)
+ //log.SetFlags(log.Lmicroseconds | log.Lshortfile)
+ log.SetFlags(log.Ldate | log.Ltime)
+}
+func GetLogFile() (*LogFile) {
+ return &logFile
+}
+
+func SetLevel(level int) {
+ logFile.level = level
+}
+
+func SetSaveMode(saveMode int) {
+ logFile.saveMode = saveMode
+}
+
+func SetSaveDays(saveDays int) {
+ logFile.saveDays = saveDays
+}
+
+func SetSaveSize(saveSize int64) {
+ logFile.filesize = saveSize
+}
+
+func Debug(args ...interface{}) {
+ if logFile.level >= DebugLevel {
+ log.SetPrefix(blue(debugPrefix))
+ //_ = log.Output(2, fmt.Sprintln(args...))
+ loggerString += fmt.Sprintln(args...)
+ }
+}
+
+func Info(args ...interface{}) {
+ if logFile.level >= InfoLevel {
+ log.SetPrefix(green(infoPrefix))
+ //_ = log.Output(2, fmt.Sprintln(args...))
+ loggerString += fmt.Sprintln(args...)
+ }
+}
+
+func Warn(args ...interface{}) {
+ if logFile.level >= WarnLevel {
+ log.SetPrefix(magenta(warnPrefix))
+ //_ = log.Output(2, fmt.Sprintln(args...))
+ loggerString += fmt.Sprintln(args...)
+ }
+}
+
+func Error(args ...interface{}) {
+ if logFile.level >= ErrorLevel {
+ log.SetPrefix(red(errorPrefix))
+ //_ = log.Output(2, fmt.Sprintln(args...))
+ loggerString += fmt.Sprintln(args...)
+ }
+}
+
+func Fatal(args ...interface{}) {
+ if logFile.level >= FatalLevel {
+ log.SetPrefix(red(fatalPrefix))
+ //_ = log.Output(2, fmt.Sprintln(args...))
+ loggerString += fmt.Sprintln(args...)
+ }
+}
+func OutPutByPanlei() {
+ _ = log.Output(2, loggerString)
+}
+
+func GetRedPrefix(s string) string {
+ return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_red, s)
+}
+
+func red(s string) string {
+ return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_red, s)
+}
+
+func green(s string) string {
+ return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_green, s)
+}
+
+func yellow(s string) string {
+ return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_yellow, s)
+}
+
+func blue(s string) string {
+ return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_blue, s)
+}
+
+func magenta(s string) string {
+ return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_magenta, s)
+}
+
+func (me LogFile) Write(buf []byte) (n int, err error) {
+ if me.fileName == "" {
+ fmt.Printf("consol: %s", buf)
+ return len(buf), nil
+ }
+
+ switch logFile.saveMode {
+ case BySize:
+ fileInfo, err := os.Stat(logFile.fileName)
+ if err != nil {
+ logFile.createLogFile()
+ logFile.logTime = time.Now().Unix()
+ }else {
+ filesize:= fileInfo.Size();
+ if logFile.fileFd == nil ||
+ filesize > logFile.filesize {
+ logFile.createLogFile()
+ logFile.logTime = time.Now().Unix()
+ }
+ }
+ default: // 榛樿鎸夊ぉ ByDay
+ if logFile.logTime+3600 < time.Now().Unix() {
+ logFile.createLogFile()
+ logFile.logTime = time.Now().Unix()
+ }
+ }
+
+ if logFile.fileFd == nil {
+ fmt.Printf("log fileFd is nil !\n")
+ return len(buf), nil
+ }
+
+ return logFile.fileFd.Write(buf)
+}
+
+func (me *LogFile) createLogFile() {
+ logdir := "./"
+ if index := strings.LastIndex(me.fileName, "/"); index != -1 {
+ logdir = me.fileName[0:index] + "/"
+ os.MkdirAll(me.fileName[0:index], os.ModePerm)
+ }
+
+ now := time.Now()
+ filename := fmt.Sprintf("%s_%04d%02d%02d",
+ me.fileName, now.Year(), now.Month(), now.Day())
+ if err := os.Rename(me.fileName, filename); err == nil {
+ go func() {
+ tarCmd := exec.Command("tar", "-zcf", filename+".tar.gz", filename, "--remove-files")
+ tarCmd.Run()
+
+ rmCmd := exec.Command("/bin/sh", "-c",
+ "find "+logdir+` -type f -mtime +` +string(logFile.saveDays)+ ` -exec rm {} \;`)
+ rmCmd.Run()
+ }()
+ }
+
+ for index := 0; index < 10; index++ {
+ if fd, err := os.OpenFile(me.fileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, os.ModeExclusive); nil == err {
+ me.fileFd.Sync()
+ me.fileFd.Close()
+ me.fileFd = fd
+ break
+ }else {
+ fmt.Println("Open logfile error! err: ", err.Error())
+ }
+ me.fileFd = nil
+ }
+}
\ No newline at end of file
diff --git a/main.go b/main.go
index 7606135..7df1578 100644
--- a/main.go
+++ b/main.go
@@ -7,6 +7,7 @@
"net/http"
_ "net/http/pprof"
"ruleprocess/insertdata"
+ "ruleprocess/logger"
"ruleprocess/structure"
"ruleprocess/util"
"time"
@@ -16,7 +17,6 @@
"flag"
"fmt"
"github.com/golang/protobuf/proto"
- "basic.com/valib/logger.git"
//"gocv.io/x/gocv"
//"image"
//"image/color"
@@ -107,6 +107,7 @@
logger.Debug("鎻掑叆瀹孍s鎵�鐢ㄦ椂闂达細", time.Since(start))
//浜嬩欢鎺ㄩ��
//go labelFilter.Judge(resultMsg)
+ logger.OutPutByPanlei()
}(msg)
}
}
diff --git a/ruleserver/personTrack.go b/ruleserver/personTrack.go
index b7639f5..7abe6fe 100644
--- a/ruleserver/personTrack.go
+++ b/ruleserver/personTrack.go
@@ -2,7 +2,7 @@
import (
"basic.com/pubsub/protomsg.git"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"github.com/golang/protobuf/proto"
"ruleprocess/structure"
"sync"
diff --git a/ruleserver/readyDataForRule.go b/ruleserver/readyDataForRule.go
index b547b9c..ec483a8 100644
--- a/ruleserver/readyDataForRule.go
+++ b/ruleserver/readyDataForRule.go
@@ -13,7 +13,7 @@
"nanomsg.org/go-mangos/transport/tcp"
"net"
"ruleprocess/cache"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"ruleprocess/structure"
"strconv"
"time"
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index d099a52..6332d81 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -3,7 +3,7 @@
import (
"ruleprocess/cache"
"ruleprocess/structure"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"sort"
"strconv"
"strings"
diff --git a/ruleserver/server.go b/ruleserver/server.go
index 28d6c39..b3ac5dc 100644
--- a/ruleserver/server.go
+++ b/ruleserver/server.go
@@ -4,7 +4,7 @@
"basic.com/pubsub/protomsg.git"
"basic.com/valib/gopherdiscovery.git"
"github.com/gogo/protobuf/proto"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"time"
)
diff --git a/ruleserver/timeTicker.go b/ruleserver/timeTicker.go
index 7650091..3d258e8 100644
--- a/ruleserver/timeTicker.go
+++ b/ruleserver/timeTicker.go
@@ -2,7 +2,7 @@
import (
"fmt"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"ruleprocess/structure"
"strings"
"time"
--
Gitblit v1.8.0