mirror of
https://git.fightbot.fun/hxuanyu/BingPaper.git
synced 2026-02-15 11:49:32 +08:00
增加日志配置选项支持,优化日志初始化与数据库日志记录
This commit is contained in:
@@ -2,14 +2,61 @@ package util
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
var Logger *zap.Logger
|
||||
var DBLogger *zap.Logger
|
||||
|
||||
func InitLogger(level string) {
|
||||
// LogConfig 定义日志配置接口,避免循环依赖
|
||||
type LogConfig interface {
|
||||
GetLevel() string
|
||||
GetFilename() string
|
||||
GetDBFilename() string
|
||||
GetMaxSize() int
|
||||
GetMaxBackups() int
|
||||
GetMaxAge() int
|
||||
GetCompress() bool
|
||||
GetLogConsole() bool
|
||||
GetShowDBLog() bool
|
||||
GetDBLogLevel() string
|
||||
}
|
||||
|
||||
func InitLogger(cfg LogConfig) {
|
||||
// 确保日志目录存在
|
||||
if cfg.GetFilename() != "" {
|
||||
_ = os.MkdirAll(filepath.Dir(cfg.GetFilename()), 0755)
|
||||
}
|
||||
if cfg.GetDBFilename() != "" {
|
||||
_ = os.MkdirAll(filepath.Dir(cfg.GetDBFilename()), 0755)
|
||||
}
|
||||
|
||||
Logger = createZapLogger(
|
||||
cfg.GetLevel(),
|
||||
cfg.GetFilename(),
|
||||
cfg.GetMaxSize(),
|
||||
cfg.GetMaxBackups(),
|
||||
cfg.GetMaxAge(),
|
||||
cfg.GetCompress(),
|
||||
cfg.GetLogConsole(),
|
||||
)
|
||||
|
||||
DBLogger = createZapLogger(
|
||||
cfg.GetDBLogLevel(),
|
||||
cfg.GetDBFilename(),
|
||||
cfg.GetMaxSize(),
|
||||
cfg.GetMaxBackups(),
|
||||
cfg.GetMaxAge(),
|
||||
cfg.GetCompress(),
|
||||
cfg.GetShowDBLog(),
|
||||
)
|
||||
}
|
||||
|
||||
func createZapLogger(level, filename string, maxSize, maxBackups, maxAge int, compress, logConsole bool) *zap.Logger {
|
||||
var zapLevel zapcore.Level
|
||||
switch level {
|
||||
case "debug":
|
||||
@@ -28,11 +75,33 @@ func InitLogger(level string) {
|
||||
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
|
||||
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
|
||||
|
||||
core := zapcore.NewCore(
|
||||
zapcore.NewConsoleEncoder(encoderConfig),
|
||||
zapcore.AddSync(os.Stdout),
|
||||
zapLevel,
|
||||
)
|
||||
var cores []zapcore.Core
|
||||
|
||||
Logger = zap.New(core, zap.AddCaller())
|
||||
// 文件输出
|
||||
if filename != "" {
|
||||
w := zapcore.AddSync(&lumberjack.Logger{
|
||||
Filename: filename,
|
||||
MaxSize: maxSize,
|
||||
MaxBackups: maxBackups,
|
||||
MaxAge: maxAge,
|
||||
Compress: compress,
|
||||
})
|
||||
cores = append(cores, zapcore.NewCore(
|
||||
zapcore.NewConsoleEncoder(encoderConfig),
|
||||
w,
|
||||
zapLevel,
|
||||
))
|
||||
}
|
||||
|
||||
// 控制台输出
|
||||
if logConsole {
|
||||
cores = append(cores, zapcore.NewCore(
|
||||
zapcore.NewConsoleEncoder(encoderConfig),
|
||||
zapcore.AddSync(os.Stdout),
|
||||
zapLevel,
|
||||
))
|
||||
}
|
||||
|
||||
core := zapcore.NewTee(cores...)
|
||||
return zap.New(core, zap.AddCaller())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user