Browse Source

添加配置loggerLevel

yjp 3 years ago
parent
commit
16cec94458
2 changed files with 30 additions and 17 deletions
  1. 27 17
      fslog_instance.go
  2. 3 0
      fslog_instance_test.go

+ 27 - 17
fslog_instance.go

@@ -7,53 +7,63 @@ import (
 	"path/filepath"
 	"runtime/debug"
 	"strings"
+	"sync"
 )
 
+var LoggerLever = zapcore.DebugLevel
+
 var logger *zap.Logger
+var initLoggerOnce sync.Once
 
 const logDir = "logs"
 
-func init() {
-	if !pathExists(logDir) {
-		err := os.MkdirAll(logDir, os.ModeDir|os.ModePerm)
+func lazyInitialize() {
+	initLoggerOnce.Do(func() {
+		if !pathExists(logDir) {
+			err := os.MkdirAll(logDir, os.ModeDir|os.ModePerm)
+			if err != nil {
+				panic(err)
+			}
+		}
+
+		logFilePath := filepath.Join(logDir, "log")
+		file, err := os.Create(logFilePath)
 		if err != nil {
 			panic(err)
 		}
-	}
-
-	logFilePath := filepath.Join(logDir, "log")
-	file, err := os.Create(logFilePath)
-	if err != nil {
-		panic(err)
-	}
 
-	developmentEncoderConfig := zap.NewDevelopmentEncoderConfig()
+		developmentEncoderConfig := zap.NewDevelopmentEncoderConfig()
 
-	encoder := zapcore.NewConsoleEncoder(developmentEncoderConfig)
-	core := zapcore.NewTee(
-		zapcore.NewCore(encoder, zapcore.AddSync(file), zapcore.DebugLevel),
-		zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), zapcore.DebugLevel),
-	)
+		encoder := zapcore.NewConsoleEncoder(developmentEncoderConfig)
+		core := zapcore.NewTee(
+			zapcore.NewCore(encoder, zapcore.AddSync(file), LoggerLever),
+			zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), LoggerLever),
+		)
 
-	logger = zap.New(core, zap.AddCaller())
+		logger = zap.New(core, zap.AddCaller())
+	})
 }
 
 func Info(serviceName string, funcName string, callName string, message string) {
+	lazyInitialize()
 	callerFields := getCallerInfoForLog(serviceName, funcName, callName)
 	logger.Info(message, callerFields...)
 }
 
 func Error(serviceName string, funcName string, callName string, message string) {
+	lazyInitialize()
 	callerFields := getCallerInfoForLog(serviceName, funcName, callName)
 	logger.Error(message+"\n"+string(debug.Stack()), callerFields...)
 }
 
 func Debug(serviceName string, funcName string, callName string, message string) {
+	lazyInitialize()
 	callerFields := getCallerInfoForLog(serviceName, funcName, callName)
 	logger.Debug(message, callerFields...)
 }
 
 func Warning(serviceName string, funcName string, callName string, message string) {
+	lazyInitialize()
 	callerFields := getCallerInfoForLog(serviceName, funcName, callName)
 	logger.Warn(message, callerFields...)
 }

+ 3 - 0
fslog_instance_test.go

@@ -1,10 +1,13 @@
 package fslog
 
 import (
+	"go.uber.org/zap/zapcore"
 	"testing"
 )
 
 func TestFSLogInstanceToConsole(t *testing.T) {
+	LoggerLever = zapcore.DebugLevel
+
 	Error("demo", "TestFSLogInstanceToConsole", "test", "error test")
 	Debug("demo", "TestFSLogInstanceToConsole", "test", "debug test")
 	Info("demo", "TestFSLogInstanceToConsole", "test", "info test")