1 // Package level implements leveled logging on top of Go kit's log package. To 2 // use the level package, create a logger as per normal in your func main, and 3 // wrap it with level.NewFilter. 4 // 5 // var logger log.Logger 6 // logger = log.NewLogfmtLogger(os.Stderr) 7 // logger = level.NewFilter(logger, level.AllowInfo()) // <-- 8 // logger = log.With(logger, "ts", log.DefaultTimestampUTC) 9 // 10 // It's also possible to configure log level from a string. For instance from 11 // a flag, environment variable or configuration file. 12 // 13 // fs := flag.NewFlagSet("myprogram") 14 // lvl := fs.String("log", "info", "debug, info, warn, error") 15 // 16 // var logger log.Logger 17 // logger = log.NewLogfmtLogger(os.Stderr) 18 // logger = level.NewFilter(logger, level.Allow(level.ParseDefault(*lvl, level.InfoValue()))) // <-- 19 // logger = log.With(logger, "ts", log.DefaultTimestampUTC) 20 // 21 // Then, at the callsites, use one of the level.Debug, Info, Warn, or Error 22 // helper methods to emit leveled log events. 23 // 24 // logger.Log("foo", "bar") // as normal, no level 25 // level.Debug(logger).Log("request_id", reqID, "trace_data", trace.Get()) 26 // if value > 100 { 27 // level.Error(logger).Log("value", value) 28 // } 29 // 30 // NewFilter allows precise control over what happens when a log event is 31 // emitted without a level key, or if a squelched level is used. Check the 32 // Option functions for details. 33 package level 34