package logger import ( "fmt" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) // Logger struct represents a zap-based logger. type Logger struct { *zap.Logger } var Log, _ = NewLogger() // NewLogger creates a new Logger instance. func NewLogger() (*Logger, error) { config := zap.Config{ Encoding: "console", Level: zap.NewAtomicLevelAt(zap.DebugLevel), OutputPaths: []string{"stdout"}, // 输出到控制台 ErrorOutputPaths: []string{"stderr"}, EncoderConfig: zapcore.EncoderConfig{ MessageKey: "message", LevelKey: "level", TimeKey: "time", //CallerKey: "caller", EncodeLevel: zapcore.CapitalLevelEncoder, EncodeTime: zapcore.RFC3339TimeEncoder, //EncodeCaller: zapcore.ShortCallerEncoder, }, Development: true, } logger, err := config.Build() if err != nil { return nil, err } return &Logger{logger}, nil } func (l *Logger) Printf(msg string, args ...interface{}) { l.Logger.Info(fmt.Sprintf("%s ==> %v", msg, args)) } // Debug logs a debug message. func (l *Logger) Debug(msg string, fields ...zap.Field) { l.Logger.Debug(msg, fields...) } func (l *Logger) DebugF(msg string, args ...interface{}) { l.Logger.Debug(fmt.Sprintf(msg, args...)) } // Info logs an info message. func (l *Logger) Info(msg string, fields ...zap.Field) { l.Logger.Info(msg, fields...) } // InfoF logs an info message with format func (l *Logger) InfoF(msg string, args ...interface{}) { l.Logger.Info(fmt.Sprintf(msg, args...)) } // Warn logs a warning message. func (l *Logger) Warn(msg string, fields ...zap.Field) { l.Logger.Warn(msg, fields...) } func (l *Logger) WarnF(msg string, args ...interface{}) { l.Logger.Warn(fmt.Sprintf(msg, args...)) } // Error logs an error message. func (l *Logger) ErrorF(msg string, args ...interface{}) { l.Logger.Error(fmt.Sprintf(msg, args...)) } // Fatal logs a fatal message and exits the program with a non-zero status code. func (l *Logger) Fatal(msg string, fields ...zap.Field) { l.Logger.Fatal(msg, fields...) }