Documentation ¶
Overview ¶
Package zap provides fast, structured, leveled logging.
Index ¶
- type Field
- type Logger
- func (log *Logger) Check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry
- func (log *Logger) Core() zapcore.Core
- func (log *Logger) DPanic(msg string, fields ...Field)
- func (log *Logger) DPanicWithContext(ctx context.Context, msg string, fields ...Field)
- func (log *Logger) Debug(msg string, fields ...Field)
- func (log *Logger) DebugWithContext(ctx context.Context, msg string, fields ...Field)
- func (log *Logger) Error(msg string, fields ...Field)
- func (log *Logger) ErrorWithContext(ctx context.Context, msg string, fields ...Field)
- func (log *Logger) Fatal(msg string, fields ...Field)
- func (log *Logger) FatalWithContext(ctx context.Context, msg string, fields ...Field)
- func (log *Logger) Info(msg string, fields ...Field)
- func (log *Logger) InfoWithContext(ctx context.Context, msg string, fields ...Field)
- func (log *Logger) Named(s string) *Logger
- func (log *Logger) Panic(msg string, fields ...Field)
- func (log *Logger) PanicWithContext(ctx context.Context, msg string, fields ...Field)
- func (log *Logger) Sugar() *SugaredLogger
- func (log *Logger) Sync() error
- func (log *Logger) Warn(msg string, fields ...Field)
- func (log *Logger) WarnWithContext(ctx context.Context, msg string, fields ...Field)
- func (log *Logger) With(fields ...Field) *Logger
- func (log *Logger) WithOptions(opts ...Option) *Logger
- type Option
- type SugaredLogger
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Field ¶
Field is an alias for Field. Aliasing this type dramatically improves the navigability of this package's API documentation.
type Logger ¶
type Logger struct {
// contains filtered or unexported fields
}
A Logger provides fast, leveled, structured logging. All methods are safe for concurrent use.
The Logger is designed for contexts in which every microsecond and every allocation matters, so its API intentionally favors performance and type safety over brevity. For most applications, the SugaredLogger strikes a better balance between performance and ergonomics.
func New ¶
New constructs a new Logger from the provided zapcore.Core and Options. If the passed zapcore.Core is nil, it falls back to using a no-op implementation.
This is the most flexible way to construct a Logger, but also the most verbose. For typical use cases, the highly-opinionated presets (NewProduction, NewDevelopment, and NewExample) or the Config struct are more convenient.
For sample code, see the package-level AdvancedConfiguration example.
func NewDevelopment ¶
NewDevelopment builds a development Logger that writes DebugLevel and above logs to standard error in a human-friendly format.
It's a shortcut for NewDevelopmentConfig().Build(...Option).
func NewExample ¶
NewExample builds a Logger that's designed for use in zap's testable examples. It writes DebugLevel and above logs to standard out as JSON, but omits the timestamp and calling function to keep example output short and deterministic.
func NewNop ¶
func NewNop() *Logger
NewNop returns a no-op Logger. It never writes out logs or internal errors, and it never runs user-defined hooks.
Using WithOptions to replace the Core or error output of a no-op Logger can re-enable logging.
func NewProduction ¶
NewProduction builds a sensible production Logger that writes InfoLevel and above logs to standard error as JSON.
It's a shortcut for NewProductionConfig().Build(...Option).
func (*Logger) Check ¶
Check returns a CheckedEntry if logging a message at the specified level is enabled. It's a completely optional optimization; in high-performance applications, Check can help avoid allocating a slice to hold fields.
func (*Logger) DPanic ¶
DPanic logs a message at DPanicLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
If the logger is in development mode, it then panics (DPanic means "development panic"). This is useful for catching errors that are recoverable, but shouldn't ever happen.
func (*Logger) DPanicWithContext ¶
DPanicWithContext logs a message at DPanicLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
If the logger is in development mode, it then panics (DPanic means "development panic"). This is useful for catching errors that are recoverable, but shouldn't ever happen.
func (*Logger) Debug ¶
Debug logs a message at DebugLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
func (*Logger) DebugWithContext ¶
DebugWithContext logs a message at DebugLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
func (*Logger) Error ¶
Error logs a message at ErrorLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
func (*Logger) ErrorWithContext ¶
ErrorWithContext logs a message at ErrorLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
func (*Logger) Fatal ¶
Fatal logs a message at FatalLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
The logger then calls os.Exit(1), even if logging at FatalLevel is disabled.
func (*Logger) FatalWithContext ¶
FatalWithContext logs a message at FatalLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
The logger then calls os.Exit(1), even if logging at FatalLevel is disabled.
func (*Logger) Info ¶
Info logs a message at InfoLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
func (*Logger) InfoWithContext ¶
InfoWithContext logs a message at InfoLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
func (*Logger) Named ¶
Named adds a new path segment to the logger's name. Segments are joined by periods. By default, Loggers are unnamed.
func (*Logger) Panic ¶
Panic logs a message at PanicLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
The logger then panics, even if logging at PanicLevel is disabled.
func (*Logger) PanicWithContext ¶
PanicWithContext logs a message at PanicLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
The logger then panics, even if logging at PanicLevel is disabled.
func (*Logger) Sugar ¶
func (log *Logger) Sugar() *SugaredLogger
Sugar wraps the Logger to provide a more ergonomic, but slightly slower, API. Sugaring a Logger is quite inexpensive, so it's reasonable for a single application to use both Loggers and SugaredLoggers, converting between them on the boundaries of performance-sensitive code.
func (*Logger) Sync ¶
Sync calls the underlying Core's Sync method, flushing any buffered log entries. Applications should take care to call Sync before exiting.
func (*Logger) Warn ¶
Warn logs a message at WarnLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
func (*Logger) WarnWithContext ¶
WarnWithContext logs a message at WarnLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.
func (*Logger) With ¶
With creates a child logger and adds structured context to it. Fields added to the child don't affect the parent, and vice versa.
func (*Logger) WithOptions ¶
WithOptions clones the current Logger, applies the supplied Options, and returns the resulting Logger. It's safe to use concurrently.
type Option ¶
An Option configures a Logger.
func AddCallerSkip ¶
AddCallerSkip increases the number of callers skipped by caller annotation (as enabled by the AddCaller option). When building wrappers around the Logger and SugaredLogger, supplying this Option prevents zap from always reporting the wrapper code as the caller.
type SugaredLogger ¶
type SugaredLogger = zap.SugaredLogger
A SugaredLogger wraps the base Logger functionality in a slower, but less verbose, API. Any Logger can be converted to a SugaredLogger with its Sugar method.