Skip to content
Snippets Groups Projects
Commit d12334a6 authored by Semyon Krestyaninov's avatar Semyon Krestyaninov
Browse files

refactor

parent 1566ab34
No related branches found
No related tags found
No related merge requests found
...@@ -7,6 +7,17 @@ import ( ...@@ -7,6 +7,17 @@ import (
type FilterFunc func(entry zapcore.Entry, fields []zapcore.Field) bool 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 { type filterCore struct {
zapcore.Core zapcore.Core
...@@ -14,7 +25,7 @@ type filterCore struct { ...@@ -14,7 +25,7 @@ type filterCore struct {
fields []zap.Field fields []zap.Field
} }
func NewFilterCore(core zapcore.Core, filters ...FilterFunc) zapcore.Core { func RegisterFilters(core zapcore.Core, filters ...FilterFunc) zapcore.Core {
return &filterCore{ return &filterCore{
Core: core, Core: core,
filters: filters, filters: filters,
......
...@@ -11,25 +11,15 @@ import ( ...@@ -11,25 +11,15 @@ import (
func TestFilterCore_Write(t *testing.T) { func TestFilterCore_Write(t *testing.T) {
core, logs := observer.New(zapcore.InfoLevel) core, logs := observer.New(zapcore.InfoLevel)
core = NewFilterCore(core, func(entry zapcore.Entry, fields []zapcore.Field) bool { core = RegisterFilters(core, FilterField(zap.Bool("check", true)))
enc := zapcore.NewMapObjectEncoder()
for _, field := range fields {
field.AddTo(enc)
}
check, _ := enc.Fields["check"].(bool)
return check
})
{ err := core.With([]zapcore.Field{zap.Bool("check", true)}).Write(zapcore.Entry{Message: "msg"}, nil)
err := core.With([]zapcore.Field{zap.Bool("check", true)}).
Write(zapcore.Entry{Message: "check true"}, nil)
require.NoError(t, err) 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) 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.NoError(t, err)
require.Equal(t, 2, logs.Len()) require.Equal(t, 2, logs.Len())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment