log/experimental_level: package documentation
Peter Bourgon
7 years ago
0 | // Package level is an EXPERIMENTAL levelled logging package. The API will | |
1 | // definitely have breaking changes and may be deleted altogether. Be warned! | |
2 | // | |
3 | // To use the level package, create a logger as per normal in your func main, | |
4 | // and wrap it with level.New. | |
5 | // | |
6 | // var logger log.Logger | |
7 | // logger = log.NewLogfmtLogger(os.Stderr) | |
8 | // logger = level.New(logger, level.Config{Allowed: level.AllowInfoAndAbove}) // <-- | |
9 | // logger = log.NewContext(logger).With("ts", log.DefaultTimestampUTC) | |
10 | // | |
11 | // Then, at the callsites, use one of the level.Debug, Info, Warn, or Error | |
12 | // helper methods to emit leveled log events. | |
13 | // | |
14 | // logger.Log("foo", "bar") // as normal, no level | |
15 | // level.Debug(logger).Log("request_id", reqID, "trace_data", trace.Get()) | |
16 | // if value > 100 { | |
17 | // level.Error(logger).Log("value", value) | |
18 | // } | |
19 | // | |
20 | // The leveled logger allows precise control over what should happen if a log | |
21 | // event is emitted without a level key, or if a squelched level is used. Check | |
22 | // the Config struct for details. And, you can easily use non-default level | |
23 | // values: create new string constants for whatever you want to change, pass | |
24 | // them explicitly to the Config struct, and write your own level.Foo-style | |
25 | // helper methods. | |
26 | package level |