Documentation ¶
Overview ¶
Package log provides a global logger for zerolog.
Example ¶
This example uses command-line flags to demonstrate various outputs depending on the chosen log level.
package main import ( "flag" "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { setup() debug := flag.Bool("debug", false, "sets log level to debug") flag.Parse() // Default level for this example is info, unless debug flag is present 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() { // Compute log output only if 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"}
Index ¶
- Variables
- func Ctx(ctx context.Context) *zerolog.Logger
- func Debug() *zerolog.Event
- func Err(err error) *zerolog.Event
- func Error() *zerolog.Event
- func Fatal() *zerolog.Event
- func Hook(h zerolog.Hook) zerolog.Logger
- func Info() *zerolog.Event
- func Level(level zerolog.Level) zerolog.Logger
- func Log() *zerolog.Event
- func Output(w io.Writer) zerolog.Logger
- func Panic() *zerolog.Event
- func Print(v ...interface{})
- func Printf(format string, v ...interface{})
- func Sample(s zerolog.Sampler) zerolog.Logger
- func Trace() *zerolog.Event
- func Warn() *zerolog.Event
- func With() zerolog.Context
- func WithLevel(level zerolog.Level) *zerolog.Event
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var Logger = zerolog.New(os.Stderr).With().Timestamp().Logger()
Logger is the global logger.
Functions ¶
func Ctx ¶
Ctx returns the Logger associated with the ctx. If no logger is associated, a disabled logger is returned.
func Debug ¶
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")
package main import ( "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { setup() log.Debug().Msg("hello world") }
Output: {"level":"debug","time":1199811905,"message":"hello world"}
func Err ¶ added in v1.17.0
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.
package main import ( "errors" "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { 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 ¶
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")
package main import ( "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { setup() log.Error().Msg("hello world") }
Output: {"level":"error","time":1199811905,"message":"hello world"}
func Fatal ¶
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")
package main import ( "errors" "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { 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) // Outputs: {"level":"fatal","time":1199811905,"error":"A repo man spends his life getting into tense situations","service":"myservice","message":"Cannot start myservice"} }
Output:
func Info ¶
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")
package main import ( "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { setup() log.Info().Msg("hello world") }
Output: {"level":"info","time":1199811905,"message":"hello world"}
func Log ¶
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"
package main import ( "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { setup() log.Log().Msg("hello world") }
Output: {"time":1199811905,"message":"hello world"}
func Panic ¶
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.
func Print ¶ added in v1.3.0
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
package main import ( "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { setup() log.Print("hello world") }
Output: {"level":"debug","time":1199811905,"message":"hello world"}
func Printf ¶ added in v1.3.0
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
package main import ( "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { setup() log.Printf("hello %s", "world") }
Output: {"level":"debug","time":1199811905,"message":"hello world"}
func Trace ¶ added in v1.17.0
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")
package main import ( "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { setup() log.Trace().Msg("hello world") }
Output: {"level":"trace","time":1199811905,"message":"hello world"}
func Warn ¶
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")
package main import ( "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) // setup would normally be an init() function, however, there seems // to be something awry with the testing framework when we set the // global Logger from an init() func setup() { zerolog.TimeFieldFormat = "" zerolog.TimestampFunc = func() time.Time { return time.Date(2008, 1, 8, 17, 5, 05, 0, time.UTC) } log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger() } func main() { setup() log.Warn().Msg("hello world") }
Output: {"level":"warn","time":1199811905,"message":"hello world"}
Types ¶
This section is empty.