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() }