|
|
|
@ -23,30 +23,21 @@ type SLogConfig struct {
|
|
|
|
|
Compress bool // 是否压缩日志
|
|
|
|
|
JsonFormat bool // 是否输出为json格式
|
|
|
|
|
ShowLine bool // 显示代码行
|
|
|
|
|
LogSaveFile bool // 是否保存到文件
|
|
|
|
|
LogInConsole bool // 是否同时输出到控制台
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type SLog struct {
|
|
|
|
|
config *SLogConfig
|
|
|
|
|
lumberjackLogger lumberjack.Logger
|
|
|
|
|
jsonHandler *slog.JSONHandler
|
|
|
|
|
textHandler *slog.TextHandler
|
|
|
|
|
logger *slog.Logger
|
|
|
|
|
config *SLogConfig
|
|
|
|
|
jsonHandler *slog.JSONHandler
|
|
|
|
|
textHandler *slog.TextHandler
|
|
|
|
|
logger *slog.Logger
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewSlog(ctx context.Context, config *SLogConfig) *SLog {
|
|
|
|
|
|
|
|
|
|
sl := &SLog{config: config}
|
|
|
|
|
|
|
|
|
|
sl.lumberjackLogger = lumberjack.Logger{
|
|
|
|
|
Filename: sl.config.LogPath + sl.config.LogName, // ⽇志⽂件路径
|
|
|
|
|
MaxSize: sl.config.MaxSize, // 单位为MB,默认为512MB
|
|
|
|
|
MaxAge: sl.config.MaxAge, // 文件最多保存多少天
|
|
|
|
|
MaxBackups: sl.config.MaxBackups, // 保留旧文件的最大个数
|
|
|
|
|
LocalTime: sl.config.LocalTime, // 采用本地时间
|
|
|
|
|
Compress: sl.config.Compress, // 是否压缩日志
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
opts := slog.HandlerOptions{
|
|
|
|
|
AddSource: sl.config.ShowLine,
|
|
|
|
|
Level: slog.LevelDebug,
|
|
|
|
@ -59,21 +50,43 @@ func NewSlog(ctx context.Context, config *SLogConfig) *SLog {
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 判断是否json格式输出
|
|
|
|
|
if sl.config.JsonFormat {
|
|
|
|
|
if sl.config.LogInConsole {
|
|
|
|
|
sl.jsonHandler = slog.NewJSONHandler(io.MultiWriter(os.Stdout, &sl.lumberjackLogger), &opts)
|
|
|
|
|
// 是否保存到文件
|
|
|
|
|
if sl.config.LogSaveFile {
|
|
|
|
|
|
|
|
|
|
lumberjackLogger := lumberjack.Logger{
|
|
|
|
|
Filename: sl.config.LogPath + sl.config.LogName, // ⽇志⽂件路径
|
|
|
|
|
MaxSize: sl.config.MaxSize, // 单位为MB,默认为512MB
|
|
|
|
|
MaxAge: sl.config.MaxAge, // 文件最多保存多少天
|
|
|
|
|
MaxBackups: sl.config.MaxBackups, // 保留旧文件的最大个数
|
|
|
|
|
LocalTime: sl.config.LocalTime, // 采用本地时间
|
|
|
|
|
Compress: sl.config.Compress, // 是否压缩日志
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 是否json格式输出
|
|
|
|
|
if sl.config.JsonFormat {
|
|
|
|
|
if sl.config.LogInConsole {
|
|
|
|
|
sl.jsonHandler = slog.NewJSONHandler(io.MultiWriter(os.Stdout, &lumberjackLogger), &opts)
|
|
|
|
|
} else {
|
|
|
|
|
sl.jsonHandler = slog.NewJSONHandler(&lumberjackLogger, &opts)
|
|
|
|
|
}
|
|
|
|
|
sl.logger = slog.New(sl.jsonHandler)
|
|
|
|
|
} else {
|
|
|
|
|
sl.jsonHandler = slog.NewJSONHandler(&sl.lumberjackLogger, &opts)
|
|
|
|
|
if sl.config.LogInConsole {
|
|
|
|
|
sl.textHandler = slog.NewTextHandler(io.MultiWriter(os.Stdout, &lumberjackLogger), &opts)
|
|
|
|
|
} else {
|
|
|
|
|
sl.textHandler = slog.NewTextHandler(&lumberjackLogger, &opts)
|
|
|
|
|
}
|
|
|
|
|
sl.logger = slog.New(sl.textHandler)
|
|
|
|
|
}
|
|
|
|
|
sl.logger = slog.New(sl.jsonHandler)
|
|
|
|
|
} else {
|
|
|
|
|
if sl.config.LogInConsole {
|
|
|
|
|
sl.textHandler = slog.NewTextHandler(io.MultiWriter(os.Stdout, &sl.lumberjackLogger), &opts)
|
|
|
|
|
// 是否json格式输出
|
|
|
|
|
if sl.config.JsonFormat {
|
|
|
|
|
sl.jsonHandler = slog.NewJSONHandler(os.Stdout, &opts)
|
|
|
|
|
sl.logger = slog.New(sl.jsonHandler)
|
|
|
|
|
} else {
|
|
|
|
|
sl.textHandler = slog.NewTextHandler(&sl.lumberjackLogger, &opts)
|
|
|
|
|
sl.textHandler = slog.NewTextHandler(os.Stdout, &opts)
|
|
|
|
|
sl.logger = slog.New(sl.textHandler)
|
|
|
|
|
}
|
|
|
|
|
sl.logger = slog.New(sl.textHandler)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return sl
|
|
|
|
|