package logger import ( "go.uber.org/zap" ) type Logger struct { zl *zap.Logger zs zap.SugaredLogger } func NewLogger() *Logger { logger, _ := zap.NewDevelopment() sugar := logger.WithOptions(zap.AddCallerSkip(1)).Sugar() return &Logger{ zl: logger, zs: *sugar, } } func (l *Logger) ZapLogger() *zap.Logger { return l.zl } var DefaultLogger = NewLogger() // Debug logs the provided arguments at [DebugLevel]. // Spaces are added between arguments when neither is a string. func Debug(args ...interface{}) { DefaultLogger.zs.Log(zap.DebugLevel, args...) } // Info logs the provided arguments at [InfoLevel]. // Spaces are added between arguments when neither is a string. func Info(args ...interface{}) { DefaultLogger.zs.Log(zap.InfoLevel, args...) } // Warn logs the provided arguments at [WarnLevel]. // Spaces are added between arguments when neither is a string. func Warn(args ...interface{}) { DefaultLogger.zs.Log(zap.WarnLevel, args...) } // Error logs the provided arguments at [ErrorLevel]. // Spaces are added between arguments when neither is a string. func Error(args ...interface{}) { DefaultLogger.zs.Log(zap.ErrorLevel, args...) } // DPanic logs the provided arguments at [DPanicLevel]. // In development, the logger then panics. (See [DPanicLevel] for details.) // Spaces are added between arguments when neither is a string. func DPanic(args ...interface{}) { DefaultLogger.zs.Log(zap.DPanicLevel, args...) } // Panic constructs a message with the provided arguments and panics. // Spaces are added between arguments when neither is a string. func Panic(args ...interface{}) { DefaultLogger.zs.Log(zap.PanicLevel, args...) } // Fatal constructs a message with the provided arguments and calls os.Exit. // Spaces are added between arguments when neither is a string. func Fatal(args ...interface{}) { DefaultLogger.zs.Log(zap.FatalLevel, args...) } // Debugf formats the message according to the format specifier // and logs it at [DebugLevel]. func Debugf(template string, args ...interface{}) { DefaultLogger.zs.Logf(zap.DebugLevel, template, args...) } // Infof formats the message according to the format specifier // and logs it at [InfoLevel]. func Infof(template string, args ...interface{}) { DefaultLogger.zs.Logf(zap.InfoLevel, template, args...) } // Warnf formats the message according to the format specifier // and logs it at [WarnLevel]. func Warnf(template string, args ...interface{}) { DefaultLogger.zs.Logf(zap.WarnLevel, template, args...) } // Errorf formats the message according to the format specifier // and logs it at [ErrorLevel]. func Errorf(template string, args ...interface{}) { DefaultLogger.zs.Logf(zap.ErrorLevel, template, args...) } // DPanicf formats the message according to the format specifier // and logs it at [DPanicLevel]. // In development, the logger then panics. (See [DPanicLevel] for details.) func DPanicf(template string, args ...interface{}) { DefaultLogger.zs.Logf(zap.DPanicLevel, template, args...) } // Panicf formats the message according to the format specifier // and panics. func Panicf(template string, args ...interface{}) { DefaultLogger.zs.Logf(zap.PanicLevel, template, args...) } // Fatalf formats the message according to the format specifier // and calls os.Exit. func Fatalf(template string, args ...interface{}) { DefaultLogger.zs.Logf(zap.FatalLevel, template, args...) } // Debugw logs a message with some additional context. The variadic key-value // pairs are treated as they are in With. // // When debug-level logging is disabled, this is much faster than // // s.With(keysAndValues).Debug(msg) func Debugw(msg string, keysAndValues ...interface{}) { DefaultLogger.zs.Logw(zap.DebugLevel, msg, keysAndValues...) } // Infow logs a message with some additional context. The variadic key-value // pairs are treated as they are in With. func Infow(msg string, keysAndValues ...interface{}) { DefaultLogger.zs.Logw(zap.InfoLevel, msg, keysAndValues...) } // Warnw logs a message with some additional context. The variadic key-value // pairs are treated as they are in With. func Warnw(msg string, keysAndValues ...interface{}) { DefaultLogger.zs.Logw(zap.WarnLevel, msg, keysAndValues...) } // Errorw logs a message with some additional context. The variadic key-value // pairs are treated as they are in With. func Errorw(msg string, keysAndValues ...interface{}) { DefaultLogger.zs.Logw(zap.ErrorLevel, msg, keysAndValues...) } // DPanicw logs a message with some additional context. In development, the // logger then panics. (See DPanicLevel for details.) The variadic key-value // pairs are treated as they are in With. func DPanicw(msg string, keysAndValues ...interface{}) { DefaultLogger.zs.Logw(zap.DPanicLevel, msg, keysAndValues...) } // Panicw logs a message with some additional context, then panics. The // variadic key-value pairs are treated as they are in With. func Panicw(msg string, keysAndValues ...interface{}) { DefaultLogger.zs.Logw(zap.PanicLevel, msg, keysAndValues...) } // Fatalw logs a message with some additional context, then calls os.Exit. The // variadic key-value pairs are treated as they are in With. func Fatalw(msg string, keysAndValues ...interface{}) { DefaultLogger.zs.Logw(zap.FatalLevel, msg, keysAndValues...) } // Debugln logs a message at [DebugLevel]. // Spaces are always added between arguments. func Debugln(args ...interface{}) { DefaultLogger.zs.Logln(zap.DebugLevel, args...) } // Infoln logs a message at [InfoLevel]. // Spaces are always added between arguments. func Infoln(args ...interface{}) { DefaultLogger.zs.Logln(zap.InfoLevel, args...) } // Warnln logs a message at [WarnLevel]. // Spaces are always added between arguments. func Warnln(args ...interface{}) { DefaultLogger.zs.Logln(zap.WarnLevel, args...) } // Errorln logs a message at [ErrorLevel]. // Spaces are always added between arguments. func Errorln(args ...interface{}) { DefaultLogger.zs.Logln(zap.ErrorLevel, args...) } // DPanicln logs a message at [DPanicLevel]. // In development, the logger then panics. (See [DPanicLevel] for details.) // Spaces are always added between arguments. func DPanicln(args ...interface{}) { DefaultLogger.zs.Logln(zap.DPanicLevel, args...) } // Panicln logs a message at [PanicLevel] and panics. // Spaces are always added between arguments. func Panicln(args ...interface{}) { DefaultLogger.zs.Logln(zap.PanicLevel, args...) } // Fatalln logs a message at [FatalLevel] and calls os.Exit. // Spaces are always added between arguments. func Fatalln(args ...interface{}) { DefaultLogger.zs.Logln(zap.FatalLevel, args...) }