Skip to content
Snippets Groups Projects
Commit 20e2a84a authored by Danis Kirasirov's avatar Danis Kirasirov
Browse files

Merge branch 'feature/PRXS-951-Log' into feature/PRXS-951-1984-FindOptions

parents 0d568685 3accb6dd
No related branches found
No related tags found
No related merge requests found
...@@ -16,7 +16,7 @@ const ( ...@@ -16,7 +16,7 @@ const (
func ContainsChannels(channels ...string) FilterFunc { func ContainsChannels(channels ...string) FilterFunc {
return func(entry zapcore.Entry, fields []zapcore.Field) bool { return func(entry zapcore.Entry, fields []zapcore.Field) bool {
for _, f := range fields { for _, f := range fields {
if f.Key == channelKey && f.Type == zapcore.ArrayMarshalerType { if f.Key == channelKey && f.Type == zapcore.SkipType {
for _, v := range f.Interface.(stringArray) { for _, v := range f.Interface.(stringArray) {
if data.Contains(v, channels) { if data.Contains(v, channels) {
return true return true
...@@ -34,7 +34,7 @@ func WithDefaultChannel(core zapcore.Core, channel string) zapcore.Core { ...@@ -34,7 +34,7 @@ func WithDefaultChannel(core zapcore.Core, channel string) zapcore.Core {
return WithChannel(core, channel, true) return WithChannel(core, channel, true)
} }
// WithChannel добавляет к переданному Core фильтрацию записей по каналам. // WithChannel добавляет к переданному zapcore.Core фильтрацию записей по каналам.
// Это означает, что если запись содержит поле Channels и значение соответствует // Это означает, что если запись содержит поле Channels и значение соответствует
// переданному каналу, то запись будет передана в zapcore.Core. // переданному каналу, то запись будет передана в zapcore.Core.
func WithChannel(core zapcore.Core, channel string, isDefault ...bool) zapcore.Core { func WithChannel(core zapcore.Core, channel string, isDefault ...bool) zapcore.Core {
......
...@@ -19,8 +19,13 @@ func (ss stringArray) MarshalLogArray(arr zapcore.ArrayEncoder) error { ...@@ -19,8 +19,13 @@ func (ss stringArray) MarshalLogArray(arr zapcore.ArrayEncoder) error {
return nil return nil
} }
// Channels возвращает поле, содержащее список каналов, в которые должна быть передана запись.
func Channels(channels ...string) zap.Field { func Channels(channels ...string) zap.Field {
return zap.Array(channelKey, stringArray(channels)) return zap.Field{
Key: channelKey,
Type: zapcore.SkipType, // используем тип zapcore.SkipType, чтобы при кодировании поле игнорировалось
Interface: stringArray(channels),
}
} }
func Category(category string) zap.Field { func Category(category string) zap.Field {
......
...@@ -10,8 +10,34 @@ import ( ...@@ -10,8 +10,34 @@ import (
"git.perx.ru/perxis/perxis-go/pkg/users" "git.perx.ru/perxis/perxis-go/pkg/users"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"go.uber.org/zap" "go.uber.org/zap"
"go.uber.org/zap/zapcore"
) )
func TestChannels(t *testing.T) {
tests := []struct {
name string
field zap.Field
want zap.Field
}{
{name: "ok", field: Channels("master"), want: zap.Field{Key: channelKey, Type: zapcore.SkipType, Interface: stringArray{"master"}}},
{name: "invalid", field: Channels(), want: zap.Field{Key: channelKey, Type: zapcore.SkipType, Interface: stringArray(nil)}},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
assert.Equal(t, tc.want, tc.field)
})
}
}
func TestChannelsEncode(t *testing.T) {
enc := zapcore.NewMapObjectEncoder()
field := Channels("master")
field.AddTo(enc)
assert.Empty(t, enc.Fields)
}
func TestCategory(t *testing.T) { func TestCategory(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment