Package log
Overview ▹
▹ Example (Basic)
▹ Example (Contextual)
▹ Example (DebugInfo)
▹ Example (SyncWriter)
▹ Example (Valuer)
Index ▹
Variables
var ( // DefaultTimestamp is a Valuer that returns the current wallclock time, // respecting time zones, when bound. DefaultTimestamp = Valuer(func() interface{} { return time.Now().Format(time.RFC3339Nano) }) // DefaultTimestampUTC is a Valuer that returns the current time in UTC // when bound. DefaultTimestampUTC = Valuer(func() interface{} { return time.Now().UTC().Format(time.RFC3339Nano) }) // DefaultCaller is a Valuer that returns the file and line where the Log // method was invoked. It can only be used with log.With. DefaultCaller = Caller(3) )
ErrMissingValue is appended to keyvals slices with odd length to substitute the missing value.
var ErrMissingValue = errors.New("(MISSING)")
func NewStdlibAdapter ¶
func NewStdlibAdapter(logger Logger, options ...StdlibAdapterOption) io.Writer
NewStdlibAdapter returns a new StdlibAdapter wrapper around the passed logger. It's designed to be passed to log.SetOutput.
type Logger ¶
Logger is the fundamental interface for all log operations. Log creates a log event from keyvals, a variadic sequence of alternating keys and values. Implementations must be safe for concurrent use by multiple goroutines. In particular, any implementation of Logger that appends to keyvals or modifies or retains any of its elements must make a copy first.
type Logger interface { Log(keyvals ...interface{}) error }
func NewJSONLogger ¶
func NewJSONLogger(w io.Writer) Logger
NewJSONLogger returns a Logger that encodes keyvals to the Writer as a single JSON object. Each log event produces no more than one call to w.Write. The passed Writer must be safe for concurrent use by multiple goroutines if the returned Logger will be used concurrently.
func NewLogfmtLogger ¶
func NewLogfmtLogger(w io.Writer) Logger
NewLogfmtLogger returns a logger that encodes keyvals to the Writer in logfmt format. Each log event produces no more than one call to w.Write. The passed Writer must be safe for concurrent use by multiple goroutines if the returned Logger will be used concurrently.
func NewNopLogger ¶
func NewNopLogger() Logger
NewNopLogger returns a logger that doesn't do anything.
func NewSyncLogger ¶
func NewSyncLogger(logger Logger) Logger
NewSyncLogger returns a logger that synchronizes concurrent use of the wrapped logger. When multiple goroutines use the SyncLogger concurrently only one goroutine will be allowed to log to the wrapped logger at a time. The other goroutines will block until the logger is available.
func With ¶
func With(logger Logger, keyvals ...interface{}) Logger
With returns a new contextual logger with keyvals prepended to those passed to calls to Log. If logger is also a contextual logger created by With or WithPrefix, keyvals is appended to the existing context.
The returned Logger replaces all value elements (odd indexes) containing a Valuer with their generated value for each call to its Log method.
func WithPrefix ¶
func WithPrefix(logger Logger, keyvals ...interface{}) Logger
WithPrefix returns a new contextual logger with keyvals prepended to those passed to calls to Log. If logger is also a contextual logger created by With or WithPrefix, keyvals is prepended to the existing context.
The returned Logger replaces all value elements (odd indexes) containing a Valuer with their generated value for each call to its Log method.
type LoggerFunc ¶
LoggerFunc is an adapter to allow use of ordinary functions as Loggers. If f is a function with the appropriate signature, LoggerFunc(f) is a Logger object that calls f.
type LoggerFunc func(...interface{}) error
func (LoggerFunc) Log ¶
func (f LoggerFunc) Log(keyvals ...interface{}) error
Log implements Logger by calling f(keyvals...).
type StdlibAdapter ¶
StdlibAdapter wraps a Logger and allows it to be passed to the stdlib logger's SetOutput. It will extract date/timestamps, filenames, and messages, and place them under relevant keys.
type StdlibAdapter struct {
Logger
// contains filtered or unexported fields
}
func (StdlibAdapter) Write ¶
func (a StdlibAdapter) Write(p []byte) (int, error)
type StdlibAdapterOption ¶
StdlibAdapterOption sets a parameter for the StdlibAdapter.
type StdlibAdapterOption func(*StdlibAdapter)
func FileKey ¶
func FileKey(key string) StdlibAdapterOption
FileKey sets the key for the file and line field. By default, it's "caller".
func MessageKey ¶
func MessageKey(key string) StdlibAdapterOption
MessageKey sets the key for the actual log message. By default, it's "msg".
func TimestampKey ¶
func TimestampKey(key string) StdlibAdapterOption
TimestampKey sets the key for the timestamp field. By default, it's "ts".
type StdlibWriter ¶
StdlibWriter implements io.Writer by invoking the stdlib log.Print. It's designed to be passed to a Go kit logger as the writer, for cases where it's necessary to redirect all Go kit log output to the stdlib logger.
If you have any choice in the matter, you shouldn't use this. Prefer to redirect the stdlib log to the Go kit logger via NewStdlibAdapter.
type StdlibWriter struct{}
func (StdlibWriter) Write ¶
func (w StdlibWriter) Write(p []byte) (int, error)
Write implements io.Writer.
type SwapLogger ¶
SwapLogger wraps another logger that may be safely replaced while other goroutines use the SwapLogger concurrently. The zero value for a SwapLogger will discard all log events without error.
SwapLogger serves well as a package global logger that can be changed by importers.
type SwapLogger struct {
// contains filtered or unexported fields
}
func (*SwapLogger) Log ¶
func (l *SwapLogger) Log(keyvals ...interface{}) error
Log implements the Logger interface by forwarding keyvals to the currently wrapped logger. It does not log anything if the wrapped logger is nil.
func (*SwapLogger) Swap ¶
func (l *SwapLogger) Swap(logger Logger)
Swap replaces the currently wrapped logger with logger. Swap may be called concurrently with calls to Log from other goroutines.
type SyncWriter ¶
SyncWriter synchronizes concurrent writes to an io.Writer.
type SyncWriter struct {
// contains filtered or unexported fields
}
func NewSyncWriter ¶
func NewSyncWriter(w io.Writer) *SyncWriter
NewSyncWriter returns a new SyncWriter. The returned writer is safe for concurrent use by multiple goroutines.
func (*SyncWriter) Write ¶
func (w *SyncWriter) Write(p []byte) (n int, err error)
Write writes p to the underlying io.Writer. If another write is already in progress, the calling goroutine blocks until the SyncWriter is available.
type Valuer ¶
A Valuer generates a log value. When passed to With or WithPrefix in a value element (odd indexes), it represents a dynamic value which is re- evaluated with each log event.
type Valuer func() interface{}
func Caller ¶
func Caller(depth int) Valuer
Caller returns a Valuer that returns a file and line from a specified depth in the callstack. Users will probably want to use DefaultCaller.
func Timestamp ¶
func Timestamp(t func() time.Time) Valuer
Timestamp returns a Valuer that invokes the underlying function when bound, returning a time.Time. Users will probably want to use DefaultTimestamp or DefaultTimestampUTC.
Subdirectories
Name | Synopsis |
---|---|
.. | |
deprecated_levels | |
level | Package level implements leveled logging on top of package log. |
term | Package term provides tools for logging to a terminal. |