From 6f2e112e3f17fda619eb9c19a8d8d2ae9d9598d9 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期三, 18 十一月 2020 17:47:42 +0800
Subject: [PATCH] 支持动态修改日志等级
---
logger.go | 58 ++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 40 insertions(+), 18 deletions(-)
diff --git a/logger.go b/logger.go
index e1f04f9..572be63 100644
--- a/logger.go
+++ b/logger.go
@@ -1,6 +1,7 @@
package logger
import (
+ "errors"
"github.com/natefinch/lumberjack"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
@@ -13,6 +14,11 @@
logger *zap.SugaredLogger
}
+var (
+ blog *BLog
+ atomicLevel = zap.NewAtomicLevelAt(zapcore.DebugLevel)
+)
+
func (l *BLog) Write(buf []byte) (n int, err error) {
l.logger.Debug(strings.Replace(string(buf),"\n","", -1))
return len(buf),nil
@@ -21,8 +27,6 @@
func GetLogFile() *BLog {
return blog
}
-
-var blog *BLog
const (
DebugLevel = iota -1
@@ -33,6 +37,7 @@
PanicLevel
FatalLevel
)
+
func InitLogger(logPath string, logLevel int,maxSize int, maxBackups int, maxAge int) {
logdir := "./logger/"
if index := strings.LastIndex(logPath, "/"); index != -1 {
@@ -52,6 +57,31 @@
}
w := zapcore.AddSync(&hook)
+ atomicLevel = zap.NewAtomicLevelAt(getZapLevel(logLevel))
+
+ encoderConfig := zap.NewProductionEncoderConfig()
+ encoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
+ encoderConfig.CallerKey = "file"
+ encoderConfig.EncodeCaller = zapcore.ShortCallerEncoder
+ encoderConfig.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
+ enc.AppendString(t.Format("2006-01-02 15:04:05"))
+ }
+
+ core := zapcore.NewCore(
+ zapcore.NewConsoleEncoder(encoderConfig),
+ w,
+ atomicLevel,
+ )
+
+ log := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1))
+
+ blog = &BLog{
+ logger: log.Sugar(),
+ }
+ blog.logger.Info("init logger success")
+}
+
+func getZapLevel(logLevel int) zapcore.Level {
var level zapcore.Level
switch logLevel {
case DebugLevel:
@@ -71,24 +101,16 @@
default:
level = zap.InfoLevel
}
- encoderConfig := zap.NewProductionEncoderConfig()
- encoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
- encoderConfig.CallerKey = "file"
- encoderConfig.EncodeCaller = zapcore.ShortCallerEncoder
- encoderConfig.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
- enc.AppendString(t.Format("2006-01-02 15:04:05"))
- }
+ return level
+}
- core := zapcore.NewCore(
- zapcore.NewConsoleEncoder(encoderConfig),
- w,
- level,
- )
- log := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1))
- blog = &BLog{
- logger: log.Sugar(),
+func SetLevel(lv int) error {
+ if blog !=nil && blog.logger != nil {
+ atomicLevel.SetLevel(getZapLevel(lv))
+ return nil
+ } else {
+ return errors.New("logger handle is nil")
}
- blog.logger.Info("init logger success")
}
func Debug(v ...interface{}) {
--
Gitblit v1.8.0