diff --git a/log/zaplog/config.go b/log/zaplog/config.go index 747ac50..942067b 100644 --- a/log/zaplog/config.go +++ b/log/zaplog/config.go @@ -1,7 +1,10 @@ package zaplog +// LogLevel 定义日志级别类型 +type LogLevel int8 + const ( - Debug int8 = iota - 1 + Debug LogLevel = iota - 1 Info Warn Error @@ -19,25 +22,24 @@ type LogFileConfig struct { } type Config struct { - JsonFormat bool // 是否使用JSON格式(默认false) - Mode int8 // 日志启用级别(使用上面定义的常量) - DebugLog LogFileConfig // Debug日志配置 - InfoLog LogFileConfig // Info日志配置 - WarnLog LogFileConfig // Warn日志配置 - ErrorLog LogFileConfig // Error日志配置 - DPanicLog LogFileConfig // DPanic日志配置 - PanicLog LogFileConfig // Panic日志配置 - FatalLog LogFileConfig // Fatal日志配置 + JsonFormat bool // 是否使用JSON格式(默认false) + DisableStdout bool // 是否禁用输出到标准输出(默认false) + Mode LogLevel // 日志启用级别(使用上面定义的常量) + DebugLog LogFileConfig // Debug日志配置 + InfoLog LogFileConfig // Info日志配置 + WarnLog LogFileConfig // Warn日志配置 + ErrorLog LogFileConfig // Error日志配置 + DPanicLog LogFileConfig // DPanic日志配置 + PanicLog LogFileConfig // Panic日志配置 + FatalLog LogFileConfig // Fatal日志配置 } -var cfg_default = Config{ - DebugLog: LogFileConfig{ - Filename: "./log/Info", - FileSize_MB: 5, - FileBackup: 5, - FileAge_DAY: 30, - Compress: true, - }, +var log_default = LogFileConfig{ + Filename: "./log/Info", + FileSize_MB: 5, + FileBackup: 5, + FileAge_DAY: 30, + Compress: true, } // 辅助函数:应用默认值 @@ -61,19 +63,32 @@ func applyDefaults(target, source *LogFileConfig) { func configDefault(config ...Config) Config { if len(config) == 0 { - return cfg_default + return Config{ + DebugLog: log_default, + InfoLog: log_default, + WarnLog: log_default, + ErrorLog: log_default, + DPanicLog: log_default, + PanicLog: log_default, + FatalLog: log_default, + } } cfg := config[0] + // 应用默认值 + if cfg.Mode < Debug || cfg.Mode > Fatal { + cfg.Mode = Info + } + // 为每个日志级别应用默认值 - applyDefaults(&cfg.DebugLog, &cfg_default.DebugLog) - applyDefaults(&cfg.InfoLog, &cfg_default.DebugLog) - applyDefaults(&cfg.WarnLog, &cfg_default.DebugLog) - applyDefaults(&cfg.ErrorLog, &cfg_default.DebugLog) - applyDefaults(&cfg.DPanicLog, &cfg_default.DebugLog) - applyDefaults(&cfg.PanicLog, &cfg_default.DebugLog) - applyDefaults(&cfg.FatalLog, &cfg_default.DebugLog) + applyDefaults(&cfg.DebugLog, &log_default) + applyDefaults(&cfg.InfoLog, &log_default) + applyDefaults(&cfg.WarnLog, &log_default) + applyDefaults(&cfg.ErrorLog, &log_default) + applyDefaults(&cfg.DPanicLog, &log_default) + applyDefaults(&cfg.PanicLog, &log_default) + applyDefaults(&cfg.FatalLog, &log_default) return cfg } diff --git a/log/zaplog/zaplog.go b/log/zaplog/zaplog.go index b9ffbc3..8c70e6d 100644 --- a/log/zaplog/zaplog.go +++ b/log/zaplog/zaplog.go @@ -77,7 +77,7 @@ func New(config ...Config) *zap.SugaredLogger { // 创建核心的函数 createCore := func(level zapcore.Level, logConfig LogFileConfig) zapcore.Core { // 生成缓存键 - cacheKey := fmt.Sprintf("%s:%d:%d:%d:%v", logConfig.Filename, logConfig.FileSize_MB, logConfig.FileBackup, logConfig.FileAge_DAY, true) + cacheKey := fmt.Sprintf("%s:%d:%d:%d:%v", logConfig.Filename, logConfig.FileSize_MB, logConfig.FileBackup, logConfig.FileAge_DAY, logConfig.Compress) // 获取或创建写入器 var ws zapcore.WriteSyncer @@ -89,13 +89,17 @@ func New(config ...Config) *zap.SugaredLogger { logConfig.FileSize_MB, logConfig.FileBackup, logConfig.FileAge_DAY, - true, + logConfig.Compress, ) wsCache[cacheKey] = ws } - // 创建多写入器(文件+控制台) - multiWs := zapcore.NewMultiWriteSyncer(ws, zapcore.AddSync(os.Stdout)) + var multiWs zapcore.WriteSyncer + if cfg.DisableStdout { + multiWs = ws + } else { + multiWs = zapcore.NewMultiWriteSyncer(ws, zapcore.AddSync(os.Stdout)) + } // 创建级别过滤器 priority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {