增加了控制台输出控制配置
parent
e7dfeffb3a
commit
b6a3db139b
|
@ -1,7 +1,10 @@
|
||||||
package zaplog
|
package zaplog
|
||||||
|
|
||||||
|
// LogLevel 定义日志级别类型
|
||||||
|
type LogLevel int8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Debug int8 = iota - 1
|
Debug LogLevel = iota - 1
|
||||||
Info
|
Info
|
||||||
Warn
|
Warn
|
||||||
Error
|
Error
|
||||||
|
@ -19,25 +22,24 @@ type LogFileConfig struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
JsonFormat bool // 是否使用JSON格式(默认false)
|
JsonFormat bool // 是否使用JSON格式(默认false)
|
||||||
Mode int8 // 日志启用级别(使用上面定义的常量)
|
DisableStdout bool // 是否禁用输出到标准输出(默认false)
|
||||||
DebugLog LogFileConfig // Debug日志配置
|
Mode LogLevel // 日志启用级别(使用上面定义的常量)
|
||||||
InfoLog LogFileConfig // Info日志配置
|
DebugLog LogFileConfig // Debug日志配置
|
||||||
WarnLog LogFileConfig // Warn日志配置
|
InfoLog LogFileConfig // Info日志配置
|
||||||
ErrorLog LogFileConfig // Error日志配置
|
WarnLog LogFileConfig // Warn日志配置
|
||||||
DPanicLog LogFileConfig // DPanic日志配置
|
ErrorLog LogFileConfig // Error日志配置
|
||||||
PanicLog LogFileConfig // Panic日志配置
|
DPanicLog LogFileConfig // DPanic日志配置
|
||||||
FatalLog LogFileConfig // Fatal日志配置
|
PanicLog LogFileConfig // Panic日志配置
|
||||||
|
FatalLog LogFileConfig // Fatal日志配置
|
||||||
}
|
}
|
||||||
|
|
||||||
var cfg_default = Config{
|
var log_default = LogFileConfig{
|
||||||
DebugLog: LogFileConfig{
|
Filename: "./log/Info",
|
||||||
Filename: "./log/Info",
|
FileSize_MB: 5,
|
||||||
FileSize_MB: 5,
|
FileBackup: 5,
|
||||||
FileBackup: 5,
|
FileAge_DAY: 30,
|
||||||
FileAge_DAY: 30,
|
Compress: true,
|
||||||
Compress: true,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 辅助函数:应用默认值
|
// 辅助函数:应用默认值
|
||||||
|
@ -61,19 +63,32 @@ func applyDefaults(target, source *LogFileConfig) {
|
||||||
|
|
||||||
func configDefault(config ...Config) Config {
|
func configDefault(config ...Config) Config {
|
||||||
if len(config) == 0 {
|
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]
|
cfg := config[0]
|
||||||
|
|
||||||
|
// 应用默认值
|
||||||
|
if cfg.Mode < Debug || cfg.Mode > Fatal {
|
||||||
|
cfg.Mode = Info
|
||||||
|
}
|
||||||
|
|
||||||
// 为每个日志级别应用默认值
|
// 为每个日志级别应用默认值
|
||||||
applyDefaults(&cfg.DebugLog, &cfg_default.DebugLog)
|
applyDefaults(&cfg.DebugLog, &log_default)
|
||||||
applyDefaults(&cfg.InfoLog, &cfg_default.DebugLog)
|
applyDefaults(&cfg.InfoLog, &log_default)
|
||||||
applyDefaults(&cfg.WarnLog, &cfg_default.DebugLog)
|
applyDefaults(&cfg.WarnLog, &log_default)
|
||||||
applyDefaults(&cfg.ErrorLog, &cfg_default.DebugLog)
|
applyDefaults(&cfg.ErrorLog, &log_default)
|
||||||
applyDefaults(&cfg.DPanicLog, &cfg_default.DebugLog)
|
applyDefaults(&cfg.DPanicLog, &log_default)
|
||||||
applyDefaults(&cfg.PanicLog, &cfg_default.DebugLog)
|
applyDefaults(&cfg.PanicLog, &log_default)
|
||||||
applyDefaults(&cfg.FatalLog, &cfg_default.DebugLog)
|
applyDefaults(&cfg.FatalLog, &log_default)
|
||||||
|
|
||||||
return cfg
|
return cfg
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,7 +77,7 @@ func New(config ...Config) *zap.SugaredLogger {
|
||||||
// 创建核心的函数
|
// 创建核心的函数
|
||||||
createCore := func(level zapcore.Level, logConfig LogFileConfig) zapcore.Core {
|
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
|
var ws zapcore.WriteSyncer
|
||||||
|
@ -89,13 +89,17 @@ func New(config ...Config) *zap.SugaredLogger {
|
||||||
logConfig.FileSize_MB,
|
logConfig.FileSize_MB,
|
||||||
logConfig.FileBackup,
|
logConfig.FileBackup,
|
||||||
logConfig.FileAge_DAY,
|
logConfig.FileAge_DAY,
|
||||||
true,
|
logConfig.Compress,
|
||||||
)
|
)
|
||||||
wsCache[cacheKey] = ws
|
wsCache[cacheKey] = ws
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建多写入器(文件+控制台)
|
var multiWs zapcore.WriteSyncer
|
||||||
multiWs := zapcore.NewMultiWriteSyncer(ws, zapcore.AddSync(os.Stdout))
|
if cfg.DisableStdout {
|
||||||
|
multiWs = ws
|
||||||
|
} else {
|
||||||
|
multiWs = zapcore.NewMultiWriteSyncer(ws, zapcore.AddSync(os.Stdout))
|
||||||
|
}
|
||||||
|
|
||||||
// 创建级别过滤器
|
// 创建级别过滤器
|
||||||
priority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {
|
priority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {
|
||||||
|
|
Loading…
Reference in New Issue