From d9e56bb3350f26f3fae7fae82495492cb8bc52bb Mon Sep 17 00:00:00 2001 From: Manfred Touron <94029+moul@users.noreply.github.com> Date: Mon, 10 May 2021 09:08:32 +0200 Subject: [PATCH] Add zapfilter This utility allows creating a logger with "advanced" filters like in the following example. It is particularly convenient to use with a CLI flag package or using environment variables. core := zap.NewExample().Core() // *=myns => any level, myns namespace // info,warn:myns.* => info or warn level, any namespace matching myns.* // error=* => everything with error level logger := zap.New(zapfilter.NewFilteringCore(core, zapfilter.MustParseRules("*:myns info,warn:myns.* error:*"))) defer logger.Sync() logger.Debug("top debug") // no match logger.Named("myns").Debug("myns debug") // matches *:myns logger.Named("bar").Debug("bar debug") // no match logger.Named("myns").Named("foo").Debug("myns.foo debug") // no match logger.Info("top info") // no match logger.Named("myns").Info("myns info") // matches *:myns logger.Named("bar").Info("bar info") // no match logger.Named("myns").Named("foo").Info("myns.foo info") // matches info,warn:myns.* logger.Warn("top warn") // no match logger.Named("myns").Warn("myns warn") // matches *:myns logger.Named("bar").Warn("bar warn") // no match logger.Named("myns").Named("foo").Warn("myns.foo warn") // matches info,warn:myns.* logger.Error("top error") // matches error:* logger.Named("myns").Error("myns error") // matches *:myns and error:* logger.Named("bar").Error("bar error") // matches error:* logger.Named("myns").Named("foo").Error("myns.foo error") // matches error:* // Output: // {"level":"debug","logger":"myns","msg":"myns debug"} // {"level":"info","logger":"myns","msg":"myns info"} // {"level":"info","logger":"myns.foo","msg":"myns.foo info"} // {"level":"warn","logger":"myns","msg":"myns warn"} // {"level":"warn","logger":"myns.foo","msg":"myns.foo warn"} // {"level":"error","msg":"top error"} // {"level":"error","logger":"myns","msg":"myns error"} // {"level":"error","logger":"bar","msg":"bar error"} // {"level":"error","logger":"myns.foo","msg":"myns.foo error"} --- FAQ.md | 1 + 1 file changed, 1 insertion(+) diff --git a/FAQ.md b/FAQ.md index 626bda978..b183b20bc 100644 --- a/FAQ.md +++ b/FAQ.md @@ -157,6 +157,7 @@ We're aware of the following extensions, but haven't used them ourselves: | `github.com/fgrosse/zaptest` | Ginkgo | | `github.com/blendle/zapdriver` | Stackdriver | | `github.com/moul/zapgorm` | Gorm | +| `github.com/moul/zapfilter` | Advanced filtering rules | [go-proverbs]: https://go-proverbs.github.io/ [import-path]: https://golang.org/cmd/go/#hdr-Remote_import_paths