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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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 GetLevel() zerolog.Level
- func Hook(h zerolog.Hook) zerolog.Logger
- func Info() *zerolog.Event
- func InterceptLogrusMessages(writer *io.PipeWriter)
- func IsDebugEnabled() bool
- func Level(level zerolog.Level) zerolog.Logger
- func Log() *zerolog.Event
- func Output(w io.Writer) zerolog.Logger
- func Panic() *zerolog.Event
- func ParseLogrusMessages(reader *io.PipeReader, handler zerolog.ParseLogrusMessageErrorHandler)
- func Print(v ...interface{})
- func Printf(format string, v ...interface{})
- func ReplaceGlobal(logger zerolog.Logger) (func(), zerolog.Logger)
- func Sample(s zerolog.Sampler) zerolog.Logger
- func SetLevel(level zerolog.Level)
- func Trace() *zerolog.Event
- func Warn() *zerolog.Event
- func With() zerolog.Context
- func WithContext(ctx context.Context) context.Context
- func WithLevel(level zerolog.Level) *zerolog.Event
- func WouldLog(level zerolog.Level) bool
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ( // Logger is the global logger. Logger = zerolog.New(os.Stderr).With().Timestamp().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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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 ¶
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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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 InterceptLogrusMessages ¶
func InterceptLogrusMessages(writer *io.PipeWriter)
InitLogrusInterceptor initializes the logrus global logger with an expected format so that they can be intercepted and parsed by ParseLogrusMessages.
func IsDebugEnabled ¶
func IsDebugEnabled() bool
IsDebugEnabled returns whether or not debug or trace logging is enabled.
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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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 ParseLogrusMessages ¶
func ParseLogrusMessages(reader *io.PipeReader, handler zerolog.ParseLogrusMessageErrorHandler)
ParseLogrusMessages uses a reader paired with the output writer from InitLogrusInterceptor to read messages from the pipe in a blocking manner until the writer is closed.
func Print ¶
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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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 ¶
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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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 ReplaceGlobal ¶
ReplaceGlobal replaces the global logger and returns a function to retrieve the original logger.
func Trace ¶
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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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" "go.innotegrity.dev/zerolog" "go.innotegrity.dev/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"}
func WithContext ¶
WithContext returns a copy of ctx with l associated. If an instance of Logger is already in the context, the context is not updated.
Types ¶
This section is empty.