134 lines
4.1 KiB
Go
134 lines
4.1 KiB
Go
package zaplog
|
|
|
|
import (
|
|
"os"
|
|
"time"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
"gopkg.in/natefinch/lumberjack.v2"
|
|
)
|
|
|
|
func textencoderConfig() zapcore.EncoderConfig {
|
|
encoderConfig := zap.NewProductionEncoderConfig()
|
|
// 时间格式
|
|
encoderConfig.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
|
|
enc.AppendString("[" + t.Format("2006-01-02 15:04:05") + "]")
|
|
}
|
|
// 日志等级字母大写
|
|
encoderConfig.EncodeLevel = func(level zapcore.Level, enc zapcore.PrimitiveArrayEncoder) {
|
|
enc.AppendString("[" + level.CapitalString() + "]")
|
|
}
|
|
return encoderConfig
|
|
}
|
|
|
|
func jsonencoderConfig() zapcore.EncoderConfig {
|
|
encoderConfig := zap.NewProductionEncoderConfig()
|
|
// 时间格式
|
|
encoderConfig.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
|
|
enc.AppendString(t.Format("2006-01-02 15:04:05"))
|
|
}
|
|
// 日志等级字母大写
|
|
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
|
|
return encoderConfig
|
|
}
|
|
|
|
func New(config ...ZapConfig) *zap.SugaredLogger {
|
|
cfg := configDefault(config...)
|
|
|
|
var encoder zapcore.Encoder
|
|
encoder = zapcore.NewConsoleEncoder(textencoderConfig())
|
|
if cfg.JsonFormat {
|
|
encoder = zapcore.NewJSONEncoder(jsonencoderConfig())
|
|
}
|
|
|
|
var coreArr []zapcore.Core
|
|
|
|
// 日志级别 Debug 级别
|
|
DebugPriority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {
|
|
return lev == zap.DebugLevel
|
|
})
|
|
|
|
// Debug 文件 writeSyncer
|
|
DebugFileWriteSyncer := zapcore.AddSync(&lumberjack.Logger{
|
|
Filename: cfg.DebugLog.Filename,
|
|
MaxSize: cfg.DebugLog.FileSize_MB,
|
|
MaxBackups: cfg.DebugLog.FileBackup,
|
|
MaxAge: cfg.DebugLog.FileAge_DAY,
|
|
Compress: true,
|
|
})
|
|
|
|
DebugFileCore := zapcore.NewCore(encoder, zapcore.NewMultiWriteSyncer(DebugFileWriteSyncer, zapcore.AddSync(os.Stdout)), DebugPriority)
|
|
coreArr = append(coreArr, DebugFileCore)
|
|
|
|
// 日志级别 Info 级别
|
|
InfoPriority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {
|
|
return lev == zap.InfoLevel
|
|
})
|
|
|
|
// Info 文件 writeSyncer
|
|
InfoFileWriteSyncer := zapcore.AddSync(&lumberjack.Logger{
|
|
Filename: cfg.InfoLog.Filename,
|
|
MaxSize: cfg.InfoLog.FileSize_MB,
|
|
MaxBackups: cfg.InfoLog.FileBackup,
|
|
MaxAge: cfg.InfoLog.FileAge_DAY,
|
|
Compress: true,
|
|
})
|
|
|
|
InfoFileCore := zapcore.NewCore(encoder, zapcore.NewMultiWriteSyncer(InfoFileWriteSyncer, zapcore.AddSync(os.Stdout)), InfoPriority)
|
|
coreArr = append(coreArr, InfoFileCore)
|
|
|
|
// 日志级别 Warn 级别
|
|
WarnPriority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {
|
|
return lev == zap.WarnLevel
|
|
})
|
|
|
|
// Warn 文件 writeSyncer
|
|
WarnFileWriteSyncer := zapcore.AddSync(&lumberjack.Logger{
|
|
Filename: cfg.WarnLog.Filename,
|
|
MaxSize: cfg.WarnLog.FileSize_MB,
|
|
MaxBackups: cfg.WarnLog.FileBackup,
|
|
MaxAge: cfg.WarnLog.FileAge_DAY,
|
|
Compress: true,
|
|
})
|
|
|
|
WarnFileCore := zapcore.NewCore(encoder, zapcore.NewMultiWriteSyncer(WarnFileWriteSyncer, zapcore.AddSync(os.Stdout)), WarnPriority)
|
|
coreArr = append(coreArr, WarnFileCore)
|
|
|
|
// 日志级别 Error 级别
|
|
ErrorPriority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {
|
|
return lev == zap.ErrorLevel
|
|
})
|
|
|
|
// Error 文件 writeSyncer
|
|
ErrorFileWriteSyncer := zapcore.AddSync(&lumberjack.Logger{
|
|
Filename: cfg.ErrorLog.Filename,
|
|
MaxSize: cfg.ErrorLog.FileSize_MB,
|
|
MaxBackups: cfg.ErrorLog.FileBackup,
|
|
MaxAge: cfg.ErrorLog.FileAge_DAY,
|
|
Compress: true,
|
|
})
|
|
|
|
ErrorFileCore := zapcore.NewCore(encoder, zapcore.NewMultiWriteSyncer(ErrorFileWriteSyncer, zapcore.AddSync(os.Stdout)), ErrorPriority)
|
|
coreArr = append(coreArr, ErrorFileCore)
|
|
|
|
// 日志级别 DPanic\Panic\Fatal 级别
|
|
HighPriority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {
|
|
return lev >= zap.DPanicLevel
|
|
})
|
|
|
|
// High 文件 writeSyncer
|
|
HighFileWriteSyncer := zapcore.AddSync(&lumberjack.Logger{
|
|
Filename: cfg.FatalLog.Filename,
|
|
MaxSize: cfg.FatalLog.FileSize_MB,
|
|
MaxBackups: cfg.FatalLog.FileBackup,
|
|
MaxAge: cfg.FatalLog.FileAge_DAY,
|
|
Compress: true,
|
|
})
|
|
|
|
HighFileCore := zapcore.NewCore(encoder, zapcore.NewMultiWriteSyncer(HighFileWriteSyncer, zapcore.AddSync(os.Stdout)), HighPriority)
|
|
coreArr = append(coreArr, HighFileCore)
|
|
|
|
return zap.New(zapcore.NewTee(coreArr...)).Sugar()
|
|
}
|