diff --git a/zap/filter_core.go b/zap/filter_core.go index 7e99d942e439afc8a05faaf55be29b8cb604b7fc..dee17ba5daf2aaf265207b516028520f08d6ced6 100644 --- a/zap/filter_core.go +++ b/zap/filter_core.go @@ -78,7 +78,7 @@ func WithFilters(core zapcore.Core, filters ...FilterFunc) zapcore.Core { func (core *filterCore) With(fields []zapcore.Field) zapcore.Core { return &filterCore{ - Core: core.Core.With(fields), + Core: core.Core, filters: core.filters, fields: append(core.fields, fields...), } diff --git a/zap/filter_core_test.go b/zap/filter_core_test.go index 21c906f24f5b7458c7628985871f1480564a3164..3f25a3f9e2116a3daafa9d75d5238f95204efa46 100644 --- a/zap/filter_core_test.go +++ b/zap/filter_core_test.go @@ -9,6 +9,17 @@ import ( "go.uber.org/zap/zaptest/observer" ) +func TestFilterCore_With(t *testing.T) { + core, logs := observer.New(zapcore.InfoLevel) + core = WithFilters(core) + + err := core.With([]zapcore.Field{zap.String("k", "v")}).Write(zapcore.Entry{Message: "msg"}, nil) + require.NoError(t, err) + + require.Len(t, logs.All(), 1) + require.Len(t, logs.All()[0].Context, 1) +} + func TestFilterCore_Write(t *testing.T) { core, logs := observer.New(zapcore.InfoLevel) core = WithFilters(core, ContainsField(zap.Bool("check", true)))