first commit

This commit is contained in:
zzw
2026-08-05 17:37:32 +08:00
commit 38be479cef
72 changed files with 15670 additions and 0 deletions
+94
View File
@@ -0,0 +1,94 @@
package utils
import (
"os"
"time"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
)
var Logger *zap.SugaredLogger
func InitLog() {
// 设置控制台编码器(带颜色)
consoleEncoder := 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)
},
})
// 设置文件编码器(无颜色)
fileEncoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{
MessageKey: "msg",
LevelKey: "level",
EncodeLevel: zapcore.LowercaseLevelEncoder, // 无颜色
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)
},
})
// 实现日志等级的interface
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
})
// 获取日志文件的io.Writer 抽象
path := GetConfigString("log.path")
infoFile := GetConfigString("log.infoFile")
errorFile := GetConfigString("log.errorFile")
fatalFile := GetConfigString("log.fatalFile")
// 生成带日期的文件名
today := time.Now().Format("2006-01-02")
infoWriter := getWriter(path + "/" + today + "-" + infoFile)
errorWriter := getWriter(path + "/" + today + "-" + errorFile)
fatalWriter := getWriter(path + "/" + today + "-" + fatalFile)
// 创建核心
core := zapcore.NewTee(
zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl >= zapcore.InfoLevel
})), // 控制台打印所有级别,带颜色
zapcore.NewCore(fileEncoder, infoWriter, infoLevel), // info 只写入 info 文件
zapcore.NewCore(fileEncoder, errorWriter, errorLevel), // error 只写入 error 文件
zapcore.NewCore(fileEncoder, fatalWriter, fatalLevel), // fatal 只写入 fatal 文件
)
log := zap.New(core, zap.AddCaller()) // 需要传入 zap.AddCaller() 才会显示打日志点的文件名和行数
Logger = log.Sugar()
}
func getWriter(filename string) zapcore.WriteSyncer {
lumberJackLogger := &lumberjack.Logger{
Filename: filename,
MaxSize: GetConfigInt("log.maxSize"),
MaxBackups: GetConfigInt("log.maxBackups"),
MaxAge: GetConfigInt("log.maxAge"),
Compress: false,
LocalTime: true,
}
return zapcore.AddSync(lumberJackLogger)
}