diff --git a/log/zap/core.go b/log/zap/core.go index ee800984fb0c7c71b80226269a4b79a7cec3f230..f2b220eab78a6cd2416408385b521c743bcefb94 100644 --- a/log/zap/core.go +++ b/log/zap/core.go @@ -57,6 +57,11 @@ func (core *Core) getEntry(entry zapcore.Entry, fields []zapcore.Field) *log.Ent fields = append(fields, core.fields...) } + enc := zapcore.NewMapObjectEncoder() + for _, field := range fields { + field.AddTo(enc) + } + ent := &log.Entry{ ID: id.GenerateNewID(), Timestamp: entry.Time, @@ -64,22 +69,18 @@ func (core *Core) getEntry(entry zapcore.Entry, fields []zapcore.Field) *log.Ent Message: entry.Message, } - for _, field := range fields { - switch field.Key { - case "category": - ent.Category = field.String - case "component": - ent.Component = field.String - case "event": - ent.Event = field.String - case "object": - ent.ObjectID = field.Interface.(*oid.ObjectId) - case "caller": - ent.CallerID = field.Interface.(*oid.ObjectId) - case "attr": - ent.Attr = field.Interface - case "tags": - ent.Tags, _ = field.Interface.([]string) + ent.Category, _ = enc.Fields["category"].(string) + ent.Component, _ = enc.Fields["component"].(string) + ent.Event, _ = enc.Fields["event"].(string) + ent.ObjectID, _ = enc.Fields["object"].(*oid.ObjectId) + ent.CallerID, _ = enc.Fields["caller"].(*oid.ObjectId) + ent.Attr = enc.Fields["attr"] + + if tags, ok := enc.Fields["tags"].([]any); ok { + for _, item := range tags { + if tag, ok := item.(string); ok { + ent.Tags = append(ent.Tags, tag) + } } } diff --git a/log/zap/field.go b/log/zap/field.go index 4410c967931ead64e8828ee6ea6fc918a9d916b9..acc6932d5fab8b2975d09998557e6ed41197010d 100644 --- a/log/zap/field.go +++ b/log/zap/field.go @@ -62,12 +62,12 @@ func Attr(attr any) zap.Field { if attr == nil { return zap.Skip() } - return zap.Reflect("attr", attr) + return zap.Any("attr", attr) } func Tags(tags ...string) zap.Field { if len(tags) == 0 { return zap.Skip() } - return zap.Reflect("tags", tags) + return zap.Strings("tags", tags) } diff --git a/log/zap/field_test.go b/log/zap/field_test.go index 491984db1cb86cb46efd4e36f177f859cd729afa..643506bac023d51b25920ae6b5a3c84d511eb342 100644 --- a/log/zap/field_test.go +++ b/log/zap/field_test.go @@ -173,7 +173,7 @@ func TestTags(t *testing.T) { field zap.Field want zap.Field }{ - {name: "ok", field: Tags("a", "b", "c"), want: zap.Reflect("tags", []string{"a", "b", "c"})}, + {name: "ok", field: Tags("a", "b", "c"), want: zap.Strings("tags", []string{"a", "b", "c"})}, {name: "invalid", field: Tags(nil...), want: zap.Skip()}, }