feat: en redis and logs
This commit is contained in:
+24
-12
@@ -6,16 +6,19 @@ import (
|
||||
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
// Logger 保留给 utils 内旧代码使用;新代码请用 pkg.local/log。
|
||||
var Logger = zap.NewNop().Sugar()
|
||||
|
||||
var CronLogger *zap.SugaredLogger
|
||||
|
||||
func InitCronLog() {
|
||||
// 设置一些基本日志格式 具体含义还比较好理解,直接看zap源码也不难懂
|
||||
encoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{
|
||||
MessageKey: "msg",
|
||||
LevelKey: "level",
|
||||
EncodeLevel: zapcore.LowercaseColorLevelEncoder, //设置颜色
|
||||
EncodeLevel: zapcore.LowercaseColorLevelEncoder,
|
||||
TimeKey: "ts",
|
||||
EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
|
||||
enc.AppendString(t.Format("2006-01-02 15:04:05"))
|
||||
@@ -25,7 +28,7 @@ func InitCronLog() {
|
||||
EncodeDuration: func(d time.Duration, enc zapcore.PrimitiveArrayEncoder) {
|
||||
enc.AppendInt64(int64(d) / 1000000)
|
||||
},
|
||||
}) // 实现两个判断日志等级的interface
|
||||
})
|
||||
|
||||
fileEncoderConfig := zapcore.EncoderConfig{
|
||||
TimeKey: "time",
|
||||
@@ -35,9 +38,9 @@ func InitCronLog() {
|
||||
EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
|
||||
enc.AppendString(t.Format("2006-01-02 15:04:05"))
|
||||
},
|
||||
EncodeLevel: zapcore.LowercaseLevelEncoder, // 无颜色
|
||||
EncodeLevel: zapcore.LowercaseLevelEncoder,
|
||||
EncodeCaller: zapcore.ShortCallerEncoder,
|
||||
ConsoleSeparator: " ", // tab分隔
|
||||
ConsoleSeparator: " ",
|
||||
}
|
||||
fileEncoder := zapcore.NewConsoleEncoder(fileEncoderConfig)
|
||||
|
||||
@@ -51,21 +54,30 @@ func InitCronLog() {
|
||||
return lvl >= zapcore.FatalLevel
|
||||
})
|
||||
|
||||
// 获取 error日志文件的io.Writer 抽象 getWriter() 在下方实现
|
||||
path := GetConfigString("log.path")
|
||||
errorFile := GetConfigString("log.errorFile")
|
||||
errorWriter := getWriter(path + "/cron-" + errorFile) // 最后创建具体的Logger
|
||||
fatalWriter := getWriter(path + "/cron-" + errorFile)
|
||||
infoFile := GetConfigString("log.infoFile")
|
||||
infoWriter := getWriter(path + "/cron-" + infoFile)
|
||||
errorWriter := cronWriter(path + "/cron-" + errorFile)
|
||||
fatalWriter := cronWriter(path + "/cron-" + errorFile)
|
||||
infoWriter := cronWriter(path + "/cron-" + infoFile)
|
||||
|
||||
core := zapcore.NewTee(
|
||||
zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), infoLevel), //打印到控制台
|
||||
zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), infoLevel),
|
||||
zapcore.NewCore(fileEncoder, fatalWriter, fatalLevel),
|
||||
zapcore.NewCore(fileEncoder, errorWriter, errorLevel),
|
||||
zapcore.NewCore(fileEncoder, infoWriter, infoLevel),
|
||||
)
|
||||
log := zap.New(core, zap.AddCaller()) // 需要传入 zap.AddCaller() 才会显示打日志点的文件名和行数, 有点小坑
|
||||
|
||||
CronLogger = log.Sugar()
|
||||
CronLogger = zap.New(core, zap.AddCaller()).Sugar()
|
||||
}
|
||||
|
||||
func cronWriter(filename string) zapcore.WriteSyncer {
|
||||
return zapcore.AddSync(&lumberjack.Logger{
|
||||
Filename: filename,
|
||||
MaxSize: GetConfigInt("log.maxSize"),
|
||||
MaxBackups: GetConfigInt("log.maxBackups"),
|
||||
MaxAge: GetConfigInt("log.maxAge"),
|
||||
Compress: false,
|
||||
LocalTime: true,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user