diff --git a/log/zap/filter_core.go b/log/zap/filter_core.go index e1049447d7dd7775806625a69026f2f7c6ae884e..43e5e6bdf6998358efcac389920511f5915fd322 100644 --- a/log/zap/filter_core.go +++ b/log/zap/filter_core.go @@ -7,6 +7,17 @@ import ( type FilterFunc func(entry zapcore.Entry, fields []zapcore.Field) bool +func FilterField(field zapcore.Field) FilterFunc { + return func(entry zapcore.Entry, fields []zapcore.Field) bool { + for _, f := range fields { + if f.Equals(field) { + return true + } + } + return false + } +} + type filterCore struct { zapcore.Core @@ -14,7 +25,7 @@ type filterCore struct { fields []zap.Field } -func NewFilterCore(core zapcore.Core, filters ...FilterFunc) zapcore.Core { +func RegisterFilters(core zapcore.Core, filters ...FilterFunc) zapcore.Core { return &filterCore{ Core: core, filters: filters, diff --git a/log/zap/filter_core_test.go b/log/zap/filter_core_test.go index f4e12b87921723a208b22954e3b009614552957f..211979752a21ceb071ce748fb0ed4e6d8eb02328 100644 --- a/log/zap/filter_core_test.go +++ b/log/zap/filter_core_test.go @@ -11,25 +11,15 @@ import ( func TestFilterCore_Write(t *testing.T) { core, logs := observer.New(zapcore.InfoLevel) - core = NewFilterCore(core, func(entry zapcore.Entry, fields []zapcore.Field) bool { - enc := zapcore.NewMapObjectEncoder() - for _, field := range fields { - field.AddTo(enc) - } - check, _ := enc.Fields["check"].(bool) - return check - }) + core = RegisterFilters(core, FilterField(zap.Bool("check", true))) - { - err := core.With([]zapcore.Field{zap.Bool("check", true)}). - Write(zapcore.Entry{Message: "check true"}, nil) - require.NoError(t, err) - } + err := core.With([]zapcore.Field{zap.Bool("check", true)}).Write(zapcore.Entry{Message: "msg"}, nil) + require.NoError(t, err) - err := core.Write(zapcore.Entry{Message: "check true"}, []zapcore.Field{zap.Bool("check", true)}) + err = core.Write(zapcore.Entry{Message: "msg"}, []zapcore.Field{zap.Bool("check", true)}) require.NoError(t, err) - err = core.Write(zapcore.Entry{Message: "check false"}, nil) + err = core.Write(zapcore.Entry{Message: "msg"}, nil) require.NoError(t, err) require.Equal(t, 2, logs.Len())