Files
VptPassiveAdapter/logger/logger.go
2025-08-04 10:49:24 +08:00

75 lines
1.7 KiB
Go

package logger
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
)
var Logger *zap.Logger
func Init() error {
config := zap.NewProductionConfig()
config.OutputPaths = []string{"stdout"}
config.ErrorOutputPaths = []string{"stderr"}
// 配置日志轮换
lumberJackLogger := &lumberjack.Logger{
Filename: "logs/app.log",
MaxSize: 10, // MB
MaxBackups: 3,
MaxAge: 30, // days
Compress: true,
}
// 创建写入器
w := zapcore.AddSync(lumberJackLogger)
// 设置日志级别
level := zap.NewAtomicLevelAt(zap.InfoLevel)
// 创建编码器配置
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.TimeKey = "time"
encoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05")
encoderConfig.EncodeCaller = zapcore.ShortCallerEncoder
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
encoderConfig.MessageKey = "msg"
encoderConfig.CallerKey = "caller"
// 创建控制台编码器(文本格式)
encoder := zapcore.NewConsoleEncoder(encoderConfig)
// 创建核心
core := zapcore.NewCore(encoder, w, level)
// 创建日志记录器
Logger = zap.New(core, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel))
return nil
}
func Info(message string, fields ...zap.Field) {
Logger.Info(message, fields...)
}
func Error(message string, fields ...zap.Field) {
Logger.Error(message, fields...)
}
func Warn(message string, fields ...zap.Field) {
Logger.Warn(message, fields...)
}
func Debug(message string, fields ...zap.Field) {
Logger.Debug(message, fields...)
}
func Fatal(message string, fields ...zap.Field) {
Logger.Fatal(message, fields...)
}
func Sync() error {
return Logger.Sync()
}