Files
lone-services/utils/cronLog.go
T
2026-08-06 09:49:54 +08:00

84 lines
2.4 KiB
Go

package utils
import (
"os"
"time"
"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() {
encoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{
MessageKey: "msg",
LevelKey: "level",
EncodeLevel: zapcore.LowercaseColorLevelEncoder,
TimeKey: "ts",
EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
enc.AppendString(t.Format("2006-01-02 15:04:05"))
},
CallerKey: "file",
EncodeCaller: zapcore.ShortCallerEncoder,
EncodeDuration: func(d time.Duration, enc zapcore.PrimitiveArrayEncoder) {
enc.AppendInt64(int64(d) / 1000000)
},
})
fileEncoderConfig := zapcore.EncoderConfig{
TimeKey: "time",
LevelKey: "level",
CallerKey: "caller",
MessageKey: "msg",
EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
enc.AppendString(t.Format("2006-01-02 15:04:05"))
},
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeCaller: zapcore.ShortCallerEncoder,
ConsoleSeparator: " ",
}
fileEncoder := zapcore.NewConsoleEncoder(fileEncoderConfig)
infoLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl >= zapcore.InfoLevel
})
errorLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl >= zapcore.ErrorLevel
})
fatalLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl >= zapcore.FatalLevel
})
path := GetConfigString("log.path")
errorFile := GetConfigString("log.errorFile")
infoFile := GetConfigString("log.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(fileEncoder, fatalWriter, fatalLevel),
zapcore.NewCore(fileEncoder, errorWriter, errorLevel),
zapcore.NewCore(fileEncoder, infoWriter, infoLevel),
)
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,
})
}