diff --git a/zap/channels.go b/zap/channels.go index 3664f6ad8962e35a98b01acf6a5b54101b716194..92b3d823e3aef22c30736942c0aa8931c7e19b31 100644 --- a/zap/channels.go +++ b/zap/channels.go @@ -1,8 +1,6 @@ package zap import ( - "strings" - "git.perx.ru/perxis/perxis-go/pkg/data" "go.uber.org/zap/zapcore" ) @@ -18,9 +16,8 @@ const ( func ContainsChannels(channels ...string) FilterFunc { return func(entry zapcore.Entry, fields []zapcore.Field) bool { for _, f := range fields { - if f.Key == channelKey && f.Type == zapcore.StringType { - list := strings.Split(f.String, ",") - for _, v := range list { + if f.Key == channelKey && f.Type == zapcore.ArrayMarshalerType { + for _, v := range f.Interface.(stringArray) { if data.Contains(v, channels) { return true } diff --git a/zap/field.go b/zap/field.go index a0c56f71083b6981f6c725f11466b4e0d82c789e..60a56235144b064b881d0705bdfe90b8c539719b 100644 --- a/zap/field.go +++ b/zap/field.go @@ -2,16 +2,25 @@ package zap import ( "context" - "strings" "git.perx.ru/perxis/perxis-go/id" _ "git.perx.ru/perxis/perxis-go/id/system" // регистрируем обработчики для системных объектов "git.perx.ru/perxis/perxis-go/pkg/auth" "go.uber.org/zap" + "go.uber.org/zap/zapcore" ) +type stringArray []string + +func (ss stringArray) MarshalLogArray(arr zapcore.ArrayEncoder) error { + for i := range ss { + arr.AppendString(ss[i]) + } + return nil +} + func Channels(channels ...string) zap.Field { - return zap.String(channelKey, strings.Join(channels, ",")) + return zap.Array(channelKey, stringArray(channels)) } func Category(category string) zap.Field {