diff --git a/log/filter.go b/log/filter.go index 102e2d90..afb2e920 100644 --- a/log/filter.go +++ b/log/filter.go @@ -45,7 +45,7 @@ func (l *filter) Error(msg string, keyvals ...interface{}) error { } func (l *filter) With(keyvals ...interface{}) Logger { - return l.next.With(keyvals...) + return &filter{next: l.next.With(keyvals...), allowed: l.allowed, errNotAllowed: l.errNotAllowed} } // Option sets a parameter for the filter. diff --git a/log/filter_test.go b/log/filter_test.go index 5e1fb167..3840b12a 100644 --- a/log/filter_test.go +++ b/log/filter_test.go @@ -93,11 +93,17 @@ func TestLevelContext(t *testing.T) { var logger log.Logger logger = log.NewTMJSONLogger(&buf) - logger = log.NewFilter(logger, log.AllowAll()) + logger = log.NewFilter(logger, log.AllowError()) logger = logger.With("context", "value") + logger.Error("foo", "bar", "baz") + if want, have := `{"_msg":"foo","bar":"baz","context":"value","level":"error"}`, strings.TrimSpace(buf.String()); want != have { + t.Errorf("\nwant '%s'\nhave '%s'", want, have) + } + + buf.Reset() logger.Info("foo", "bar", "baz") - if want, have := `{"_msg":"foo","bar":"baz","context":"value","level":"info"}`, strings.TrimSpace(buf.String()); want != have { + if want, have := ``, strings.TrimSpace(buf.String()); want != have { t.Errorf("\nwant '%s'\nhave '%s'", want, have) } }