MCPcopy
hub / github.com/rs/zerolog / appendFieldList

Function appendFieldList

fields.go:53–312  ·  view source on GitHub ↗
(dst []byte, kvList []interface{}, stack bool, ctx context.Context, hooks []Hook)

Source from the content-addressed store, hash-verified

51}
52
53func appendFieldList(dst []byte, kvList []interface{}, stack bool, ctx context.Context, hooks []Hook) []byte {
54 for i, n := 0, len(kvList); i < n; i += 2 {
55 key, val := kvList[i], kvList[i+1]
56 if key, ok := key.(string); ok {
57 dst = enc.AppendKey(dst, key)
58 } else {
59 continue
60 }
61 switch val := val.(type) {
62 case string:
63 dst = enc.AppendString(dst, val)
64 case []byte:
65 dst = enc.AppendBytes(dst, val)
66 case error:
67 switch m := ErrorMarshalFunc(val).(type) {
68 case nil:
69 dst = enc.AppendNil(dst)
70 case LogObjectMarshaler:
71 dst = appendObject(dst, m, stack, ctx, hooks)
72 case error:
73 if !isNilValue(m) {
74 dst = enc.AppendString(dst, m.Error())
75 }
76 case string:
77 dst = enc.AppendString(dst, m)
78 default:
79 dst = enc.AppendInterface(dst, m)
80 }
81
82 if stack && ErrorStackMarshaler != nil {
83 switch m := ErrorStackMarshaler(val).(type) {
84 case nil:
85 return dst // do nothing with nil errors
86 case LogObjectMarshaler:
87 dst = enc.AppendKey(dst, ErrorStackFieldName)
88 dst = appendObject(dst, m, stack, ctx, hooks)
89 case error:
90 dst = enc.AppendKey(dst, ErrorStackFieldName)
91 dst = enc.AppendString(dst, m.Error())
92 case string:
93 dst = enc.AppendKey(dst, ErrorStackFieldName)
94 dst = enc.AppendString(dst, m)
95 default:
96 dst = enc.AppendKey(dst, ErrorStackFieldName)
97 dst = enc.AppendInterface(dst, m)
98 }
99 }
100 case []error:
101 dst = enc.AppendArrayStart(dst)
102 for i, err := range val {
103 switch m := ErrorMarshalFunc(err).(type) {
104 case nil:
105 dst = enc.AppendNil(dst)
106 case LogObjectMarshaler:
107 dst = appendObject(dst, m, stack, ctx, hooks)
108 case error:
109 if !isNilValue(m) {
110 dst = enc.AppendString(dst, m.Error())

Callers 1

appendFieldsFunction · 0.85

Calls 15

appendObjectFunction · 0.85
isNilValueFunction · 0.85
appendJSONFunction · 0.70
AppendKeyMethod · 0.65
AppendStringMethod · 0.65
AppendBytesMethod · 0.65
AppendNilMethod · 0.65
AppendInterfaceMethod · 0.65
AppendArrayStartMethod · 0.65
AppendArrayDelimMethod · 0.65
AppendArrayEndMethod · 0.65
AppendBoolMethod · 0.65

Tested by

no test coverage detected