1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package zapcore
22
23 import "time"
24
25
26
27
28 type MapObjectEncoder struct {
29
30 Fields map[string]interface{}
31
32 cur map[string]interface{}
33 }
34
35
36 func NewMapObjectEncoder() *MapObjectEncoder {
37 m := make(map[string]interface{})
38 return &MapObjectEncoder{
39 Fields: m,
40 cur: m,
41 }
42 }
43
44
45 func (m *MapObjectEncoder) AddArray(key string, v ArrayMarshaler) error {
46 arr := &sliceArrayEncoder{elems: make([]interface{}, 0)}
47 err := v.MarshalLogArray(arr)
48 m.cur[key] = arr.elems
49 return err
50 }
51
52
53 func (m *MapObjectEncoder) AddObject(k string, v ObjectMarshaler) error {
54 newMap := NewMapObjectEncoder()
55 m.cur[k] = newMap.Fields
56 return v.MarshalLogObject(newMap)
57 }
58
59
60 func (m *MapObjectEncoder) AddBinary(k string, v []byte) { m.cur[k] = v }
61
62
63 func (m *MapObjectEncoder) AddByteString(k string, v []byte) { m.cur[k] = string(v) }
64
65
66 func (m *MapObjectEncoder) AddBool(k string, v bool) { m.cur[k] = v }
67
68
69 func (m MapObjectEncoder) AddDuration(k string, v time.Duration) { m.cur[k] = v }
70
71
72 func (m *MapObjectEncoder) AddComplex128(k string, v complex128) { m.cur[k] = v }
73
74
75 func (m *MapObjectEncoder) AddComplex64(k string, v complex64) { m.cur[k] = v }
76
77
78 func (m *MapObjectEncoder) AddFloat64(k string, v float64) { m.cur[k] = v }
79
80
81 func (m *MapObjectEncoder) AddFloat32(k string, v float32) { m.cur[k] = v }
82
83
84 func (m *MapObjectEncoder) AddInt(k string, v int) { m.cur[k] = v }
85
86
87 func (m *MapObjectEncoder) AddInt64(k string, v int64) { m.cur[k] = v }
88
89
90 func (m *MapObjectEncoder) AddInt32(k string, v int32) { m.cur[k] = v }
91
92
93 func (m *MapObjectEncoder) AddInt16(k string, v int16) { m.cur[k] = v }
94
95
96 func (m *MapObjectEncoder) AddInt8(k string, v int8) { m.cur[k] = v }
97
98
99 func (m *MapObjectEncoder) AddString(k string, v string) { m.cur[k] = v }
100
101
102 func (m MapObjectEncoder) AddTime(k string, v time.Time) { m.cur[k] = v }
103
104
105 func (m *MapObjectEncoder) AddUint(k string, v uint) { m.cur[k] = v }
106
107
108 func (m *MapObjectEncoder) AddUint64(k string, v uint64) { m.cur[k] = v }
109
110
111 func (m *MapObjectEncoder) AddUint32(k string, v uint32) { m.cur[k] = v }
112
113
114 func (m *MapObjectEncoder) AddUint16(k string, v uint16) { m.cur[k] = v }
115
116
117 func (m *MapObjectEncoder) AddUint8(k string, v uint8) { m.cur[k] = v }
118
119
120 func (m *MapObjectEncoder) AddUintptr(k string, v uintptr) { m.cur[k] = v }
121
122
123 func (m *MapObjectEncoder) AddReflected(k string, v interface{}) error {
124 m.cur[k] = v
125 return nil
126 }
127
128
129 func (m *MapObjectEncoder) OpenNamespace(k string) {
130 ns := make(map[string]interface{})
131 m.cur[k] = ns
132 m.cur = ns
133 }
134
135
136
137 type sliceArrayEncoder struct {
138 elems []interface{}
139 }
140
141 func (s *sliceArrayEncoder) AppendArray(v ArrayMarshaler) error {
142 enc := &sliceArrayEncoder{}
143 err := v.MarshalLogArray(enc)
144 s.elems = append(s.elems, enc.elems)
145 return err
146 }
147
148 func (s *sliceArrayEncoder) AppendObject(v ObjectMarshaler) error {
149 m := NewMapObjectEncoder()
150 err := v.MarshalLogObject(m)
151 s.elems = append(s.elems, m.Fields)
152 return err
153 }
154
155 func (s *sliceArrayEncoder) AppendReflected(v interface{}) error {
156 s.elems = append(s.elems, v)
157 return nil
158 }
159
160 func (s *sliceArrayEncoder) AppendBool(v bool) { s.elems = append(s.elems, v) }
161 func (s *sliceArrayEncoder) AppendByteString(v []byte) { s.elems = append(s.elems, string(v)) }
162 func (s *sliceArrayEncoder) AppendComplex128(v complex128) { s.elems = append(s.elems, v) }
163 func (s *sliceArrayEncoder) AppendComplex64(v complex64) { s.elems = append(s.elems, v) }
164 func (s *sliceArrayEncoder) AppendDuration(v time.Duration) { s.elems = append(s.elems, v) }
165 func (s *sliceArrayEncoder) AppendFloat64(v float64) { s.elems = append(s.elems, v) }
166 func (s *sliceArrayEncoder) AppendFloat32(v float32) { s.elems = append(s.elems, v) }
167 func (s *sliceArrayEncoder) AppendInt(v int) { s.elems = append(s.elems, v) }
168 func (s *sliceArrayEncoder) AppendInt64(v int64) { s.elems = append(s.elems, v) }
169 func (s *sliceArrayEncoder) AppendInt32(v int32) { s.elems = append(s.elems, v) }
170 func (s *sliceArrayEncoder) AppendInt16(v int16) { s.elems = append(s.elems, v) }
171 func (s *sliceArrayEncoder) AppendInt8(v int8) { s.elems = append(s.elems, v) }
172 func (s *sliceArrayEncoder) AppendString(v string) { s.elems = append(s.elems, v) }
173 func (s *sliceArrayEncoder) AppendTime(v time.Time) { s.elems = append(s.elems, v) }
174 func (s *sliceArrayEncoder) AppendUint(v uint) { s.elems = append(s.elems, v) }
175 func (s *sliceArrayEncoder) AppendUint64(v uint64) { s.elems = append(s.elems, v) }
176 func (s *sliceArrayEncoder) AppendUint32(v uint32) { s.elems = append(s.elems, v) }
177 func (s *sliceArrayEncoder) AppendUint16(v uint16) { s.elems = append(s.elems, v) }
178 func (s *sliceArrayEncoder) AppendUint8(v uint8) { s.elems = append(s.elems, v) }
179 func (s *sliceArrayEncoder) AppendUintptr(v uintptr) { s.elems = append(s.elems, v) }
180
View as plain text