This commit is contained in:
2025-07-19 02:03:24 +08:00
commit ac6eeff8c9
44 changed files with 10305 additions and 0 deletions

View File

@ -0,0 +1,64 @@
package logger
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"os"
)
var Log *zap.Logger
func InitLogger(level, format, output string) {
// 1. 解析日志级别
var lvl zapcore.Level
switch level {
case "debug":
lvl = zap.DebugLevel
case "info":
lvl = zap.InfoLevel
case "warn":
lvl = zap.WarnLevel
case "error":
lvl = zap.ErrorLevel
default:
lvl = zap.InfoLevel
}
// 2. 编码器配置
encoderCfg := zapcore.EncoderConfig{
TimeKey: "time",
LevelKey: "level",
NameKey: "logger",
CallerKey: "caller",
MessageKey: "msg",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.CapitalColorLevelEncoder,
EncodeTime: zapcore.ISO8601TimeEncoder,
EncodeDuration: zapcore.StringDurationEncoder,
EncodeCaller: zapcore.ShortCallerEncoder,
}
var encoder zapcore.Encoder
if format == "json" {
encoder = zapcore.NewJSONEncoder(encoderCfg)
} else {
encoder = zapcore.NewConsoleEncoder(encoderCfg)
}
// 3. 设置输出目标
var ws zapcore.WriteSyncer
if output == "stdout" {
ws = zapcore.AddSync(os.Stdout)
} else {
f, err := os.OpenFile(output, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
panic("无法打开日志文件: " + err.Error())
}
ws = zapcore.AddSync(f)
}
core := zapcore.NewCore(encoder, ws, zap.NewAtomicLevelAt(lvl))
Log = zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1))
zap.ReplaceGlobals(Log)
}