log
import "github.com/rs/zerolog/log"
Package log provides a global logger for zerolog.
Variables
Logger is the global logger.
var Logger = zerolog.New(os.Stderr).With().Timestamp().Logger()Functions
func Ctx(ctx context.Context) *zerolog.Logger
Ctx returns the Logger associated with the ctx. If no logger is associated, a disabled logger is returned.
Example
Example of using the Ctx function in the log package to log with context
{
setup()
hooked := log.Hook(captainHook)
ctx := context.WithValue(context.Background(), valueKey, "12345")
logger := hooked.With().Ctx(ctx).Logger()
log.Ctx(logger.WithContext(ctx)).Info().Msg("hello world")
}Output:
{"level":"info","time":1199811905,"key":"12345","is_error":false,"msg_len":11,"message":"hello world"}func Debug() *zerolog.Event
Debug starts a new message with debug level.
You must call Msg on the returned event in order to send the event.
Example
Example of a log at a particular "level" (in this case, "debug")
{
setup()
log.Debug().Msg("hello world")
}Output:
{"level":"debug","time":1199811905,"message":"hello world"}func Err(err error) *zerolog.Event
Err starts a new message with error level with err as a field if not nil or with info level if err is nil.
You must call Msg on the returned event in order to send the event.
Example
Example of a conditional level based on the presence of an error.
{
setup()
err := errors.New("some error")
log.Err(err).Msg("hello world")
log.Err(nil).Msg("hello world")
}Output:
{"level":"error","error":"some error","time":1199811905,"message":"hello world"}
{"level":"info","time":1199811905,"message":"hello world"}func Error() *zerolog.Event
Error starts a new message with error level.
You must call Msg on the returned event in order to send the event.
Example
Example of a log at a particular "level" (in this case, "error")
{
setup()
log.Error().Msg("hello world")
}Output:
{"level":"error","time":1199811905,"message":"hello world"}func Fatal() *zerolog.Event
Fatal starts a new message with fatal level. The os.Exit(1) function is called by the Msg method.
You must call Msg on the returned event in order to send the event.
Example
Example of a log at a particular "level" (in this case, "fatal")
{
setup()
err := errors.New("A repo man spends his life getting into tense situations")
service := "myservice"
log.Fatal().
Err(err).
Str("service", service).
Msgf("Cannot start %s", service)
}func Hook(h zerolog.Hook) zerolog.Logger
Hook returns a logger with the h Hook.
func Info() *zerolog.Event
Info starts a new message with info level.
You must call Msg on the returned event in order to send the event.
Example
Example of a log at a particular "level" (in this case, "info")
{
setup()
log.Info().Msg("hello world")
}Output:
{"level":"info","time":1199811905,"message":"hello world"}func Level(level zerolog.Level) zerolog.Logger
Level creates a child logger with the minimum accepted level set to level.
Example
Example of using the Level function to set the log level
{
setup()
leveled := log.Level(zerolog.ErrorLevel)
leveled.Info().Msg("hello world")
leveled.Error().Msg("I said HELLO")
}Output:
{"level":"error","time":1199811905,"message":"I said HELLO"}func Log() *zerolog.Event
Log starts a new message with no level. Setting zerolog.GlobalLevel to zerolog.Disabled will still disable events produced by this method.
You must call Msg on the returned event in order to send the event.
Example
Example of a log with no particular "level"
{
setup()
log.Log().Msg("hello world")
}Output:
{"time":1199811905,"message":"hello world"}func Output(w io.Writer) zerolog.Logger
Output duplicates the global logger and sets w as its output.
Example
Example of using the Output function in the log package to change the output destination
{
setup()
out := &bytes.Buffer{}
tee := log.Output(out)
tee.Info().Msg("hello world")
written := out.Len()
log.Info().Int("bytes", written).Msg("wrote")
}Output:
{"level":"info","bytes":59,"time":1199811905,"message":"wrote"}func Panic() *zerolog.Event
Panic starts a new message with panic level. The message is also sent to the panic function.
You must call Msg on the returned event in order to send the event.
Example
Example of a log at a particular "level" (in this case, "panic")
{
setup()
log.Panic().Msg("Cannot start")
}func Print(v ...interface{})
Print sends a log event using debug level and no extra field. Arguments are handled in the manner of fmt.Print.
Example
Simple logging example using the Print function in the log package Note that both Print and Printf are at the debug log level by default
{
setup()
log.Print("hello world")
}Output:
{"level":"debug","time":1199811905,"message":"hello world"}func Printf(format string, v ...interface{})
Printf sends a log event using debug level and no extra field. Arguments are handled in the manner of fmt.Printf.
Example
Simple logging example using the Printf function in the log package
{
setup()
log.Printf("hello %s", "world")
}Output:
{"level":"debug","time":1199811905,"message":"hello world"}func Sample(s zerolog.Sampler) zerolog.Logger
Sample returns a logger with the s sampler.
Example
Example of using the Sample function in the log package to set a sampler
{
setup()
sampled := log.Sample(&zerolog.BasicSampler{N: 2})
sampled.Info().Msg("hello world")
sampled.Info().Msg("I said, hello world")
sampled.Info().Msg("Can you here me now world")
}Output:
{"level":"info","time":1199811905,"message":"hello world"}
{"level":"info","time":1199811905,"message":"Can you here me now world"}func Trace() *zerolog.Event
Trace starts a new message with trace level.
You must call Msg on the returned event in order to send the event.
Example
Example of a log at a particular "level" (in this case, "trace")
{
setup()
log.Trace().Msg("hello world")
}Output:
{"level":"trace","time":1199811905,"message":"hello world"}func Warn() *zerolog.Event
Warn starts a new message with warn level.
You must call Msg on the returned event in order to send the event.
Example
Example of a log at a particular "level" (in this case, "warn")
{
setup()
log.Warn().Msg("hello world")
}Output:
{"level":"warn","time":1199811905,"message":"hello world"}func With() zerolog.Context
With creates a child logger with the field added to its context.
Example
Example of using the With function to add context fields
{
setup()
augmented := log.With().Str("service", "myservice").Logger()
augmented.Info().Msg("hello world")
}Output:
{"level":"info","service":"myservice","time":1199811905,"message":"hello world"}func WithLevel(level zerolog.Level) *zerolog.Event
WithLevel starts a new message with level.
You must call Msg on the returned event in order to send the event.
Example
Example of using the WithLevel function to set the log level
{
setup()
event := log.WithLevel(zerolog.ErrorLevel)
event.Msg("taxes are due")
}Output:
{"level":"error","time":1199811905,"message":"taxes are due"}Examples
Example
This example uses command-line flags to demonstrate various outputs depending on the chosen log level.
{
setup()
debug := flag.Bool("debug", false, "sets log level to debug")
flag.Parse()
zerolog.SetGlobalLevel(zerolog.InfoLevel)
if *debug {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
log.Debug().Msg("This message appears only when log level set to Debug")
log.Info().Msg("This message appears when log level set to Debug or Info")
if e := log.Debug(); e.Enabled() {
value := "bar"
e.Str("foo", value).Msg("some debug message")
}
}Output:
{"level":"info","time":1199811905,"message":"This message appears when log level set to Debug or Info"}