kit: Index | Examples | Files

package level

import ""

Package level implements leveled logging on top of package log. To use the level package, create a logger as per normal in your func main, and wrap it with level.NewFilter.

var logger log.Logger
logger = log.NewLogfmtLogger(os.Stderr)
logger = level.NewFilter(logger, level.AllowInfoAndAbove()) // <--
logger = log.With(logger, "ts", log.DefaultTimestampUTC)

Then, at the callsites, use one of the level.Debug, Info, Warn, or Error helper methods to emit leveled log events.

logger.Log("foo", "bar") // as normal, no level
level.Debug(logger).Log("request_id", reqID, "trace_data", trace.Get())
if value > 100 {
    level.Error(logger).Log("value", value)

NewFilter allows precise control over what happens when a log event is emitted without a level key, or if a squelched level is used. Check the Option functions for details.


// setup logger with level filter
logger := log.NewLogfmtLogger(os.Stdout)
logger = level.NewFilter(logger, level.AllowInfo())
logger = log.With(logger, "caller", log.DefaultCaller)

// use level helpers to log at different levels
level.Error(logger).Log("err", errors.New("bad data"))
level.Info(logger).Log("event", "data saved")
level.Debug(logger).Log("next item", 17) // filtered


level=error caller=example_test.go:18 err="bad data"
level=info caller=example_test.go:19 event="data saved"



Package Files

doc.go level.go

func Debug Uses

func Debug(logger log.Logger) log.Logger

Debug returns a logger that includes a Key/DebugValue pair.

func Error Uses

func Error(logger log.Logger) log.Logger

Error returns a logger that includes a Key/ErrorValue pair.

func Info Uses

func Info(logger log.Logger) log.Logger

Info returns a logger that includes a Key/InfoValue pair.

func Key Uses

func Key() interface{}

Key returns the unique key added to log events by the loggers in this package.

func NewFilter Uses

func NewFilter(next log.Logger, options ...Option) log.Logger

NewFilter wraps next and implements level filtering. See the commentary on the Option functions for a detailed description of how to configure levels. If no options are provided, all leveled log events created with Debug, Info, Warn or Error helper methods are squelched and non-leveled log events are passed to next unmodified.

func NewInjector Uses

func NewInjector(next log.Logger, level Value) log.Logger

NewInjector wraps next and returns a logger that adds a Key/level pair to the beginning of log events that don't already contain a level. In effect, this gives a default level to logs without a level.

func Warn Uses

func Warn(logger log.Logger) log.Logger

Warn returns a logger that includes a Key/WarnValue pair.

type Option Uses

type Option func(*logger)

Option sets a parameter for the leveled logger.

func AllowAll Uses

func AllowAll() Option

AllowAll is an alias for AllowDebug.

func AllowDebug Uses

func AllowDebug() Option

AllowDebug allows error, warn, info and debug level log events to pass.

func AllowError Uses

func AllowError() Option

AllowError allows only error level log events to pass.

func AllowInfo Uses

func AllowInfo() Option

AllowInfo allows error, warn and info level log events to pass.

func AllowNone Uses

func AllowNone() Option

AllowNone allows no leveled log events to pass.

func AllowWarn Uses

func AllowWarn() Option

AllowWarn allows error and warn level log events to pass.

func ErrNoLevel Uses

func ErrNoLevel(err error) Option

ErrNoLevel sets the error to return from Log when it squelches a log event with no level. By default, ErrNoLevel is nil; in this case the log event is squelched with no error.

func ErrNotAllowed Uses

func ErrNotAllowed(err error) Option

ErrNotAllowed sets the error to return from Log when it squelches a log event disallowed by the configured Allow[Level] option. By default, ErrNotAllowed is nil; in this case the log event is squelched with no error.

func SquelchNoLevel Uses

func SquelchNoLevel(squelch bool) Option

SquelchNoLevel instructs Log to squelch log events with no level, so that they don't proceed through to the wrapped logger. If SquelchNoLevel is set to true and a log event is squelched in this way, the error value configured with ErrNoLevel is returned to the caller.

type Value Uses

type Value interface {
    String() string
    // contains filtered or unexported methods

Value is the interface that each of the canonical level values implement. It contains unexported methods that prevent types from other packages from implementing it and guaranteeing that NewFilter can distinguish the levels defined in this package from all other values.

func DebugValue Uses

func DebugValue() Value

DebugValue returns the unique value added to log events by Warn.

func ErrorValue Uses

func ErrorValue() Value

ErrorValue returns the unique value added to log events by Error.

func InfoValue Uses

func InfoValue() Value

InfoValue returns the unique value added to log events by Info.

func WarnValue Uses

func WarnValue() Value

WarnValue returns the unique value added to log events by Warn.

Package level imports 1 packages (graph) and is imported by 142 packages. Updated 2017-12-19. Refresh now. Tools for package owners.