From d77d6bc13f94765bf8f88b0791c85ec6efc3652d Mon Sep 17 00:00:00 2001
From: Semyon Krestyaninov <ensiouel@gmail.com>
Date: Thu, 15 Feb 2024 12:48:56 +0300
Subject: [PATCH] Revert "refactor"

This reverts commit 29d881cf9099e129993fb2beb4015eb72e1874a7.
---
 log/zap/core.go       | 33 +++++++++++++++++----------------
 log/zap/field.go      |  4 ++--
 log/zap/field_test.go |  2 +-
 3 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/log/zap/core.go b/log/zap/core.go
index ee800984..f2b220ea 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 4410c967..acc6932d 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 491984db..643506ba 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()},
 	}
 
-- 
GitLab