This commit is contained in:
2026-07-02 20:19:33 +08:00
parent 5be16406e4
commit 1dde8fb172
5 changed files with 46 additions and 5 deletions
+18 -4
View File
@@ -8,6 +8,9 @@ import (
var Logger *zap.Logger
// atomicLevel 持有当前生效的日志级别,支持在配置加载完成后动态调整(无需重建 Logger)
var atomicLevel = zap.NewAtomicLevelAt(zap.InfoLevel)
func Init() error {
config := zap.NewProductionConfig()
config.OutputPaths = []string{"stdout"}
@@ -25,9 +28,6 @@ func Init() error {
// 创建写入器
w := zapcore.AddSync(lumberJackLogger)
// 设置日志级别
level := zap.NewAtomicLevelAt(zap.InfoLevel)
// 创建编码器配置
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.TimeKey = "time"
@@ -41,7 +41,7 @@ func Init() error {
encoder := zapcore.NewConsoleEncoder(encoderConfig)
// 创建核心
core := zapcore.NewCore(encoder, w, level)
core := zapcore.NewCore(encoder, w, atomicLevel)
// 创建日志记录器
Logger = zap.New(core, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel))
@@ -49,6 +49,20 @@ func Init() error {
return nil
}
// SetLevel 动态调整日志级别,可在配置文件加载完成后调用(例如开启 debug 日志排查问题)。
// levelStr 支持 debug/info/warn/error 等,为空或非法值时保持当前级别不变并返回错误。
func SetLevel(levelStr string) error {
if levelStr == "" {
return nil
}
var level zapcore.Level
if err := level.UnmarshalText([]byte(levelStr)); err != nil {
return err
}
atomicLevel.SetLevel(level)
return nil
}
func Info(message string, fields ...zap.Field) {
Logger.Info(message, fields...)
}