增加了控制台输出控制配置
parent
e7dfeffb3a
commit
b6a3db139b
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue