1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package zap
22
23 import (
24 "fmt"
25 "time"
26
27 "go.uber.org/zap/zapcore"
28 )
29
30
31
32
33 func Array(key string, val zapcore.ArrayMarshaler) Field {
34 return Field{Key: key, Type: zapcore.ArrayMarshalerType, Interface: val}
35 }
36
37
38 func Bools(key string, bs []bool) Field {
39 return Array(key, bools(bs))
40 }
41
42
43
44 func ByteStrings(key string, bss [][]byte) Field {
45 return Array(key, byteStringsArray(bss))
46 }
47
48
49 func Complex128s(key string, nums []complex128) Field {
50 return Array(key, complex128s(nums))
51 }
52
53
54 func Complex64s(key string, nums []complex64) Field {
55 return Array(key, complex64s(nums))
56 }
57
58
59 func Durations(key string, ds []time.Duration) Field {
60 return Array(key, durations(ds))
61 }
62
63
64 func Float64s(key string, nums []float64) Field {
65 return Array(key, float64s(nums))
66 }
67
68
69 func Float32s(key string, nums []float32) Field {
70 return Array(key, float32s(nums))
71 }
72
73
74 func Ints(key string, nums []int) Field {
75 return Array(key, ints(nums))
76 }
77
78
79 func Int64s(key string, nums []int64) Field {
80 return Array(key, int64s(nums))
81 }
82
83
84 func Int32s(key string, nums []int32) Field {
85 return Array(key, int32s(nums))
86 }
87
88
89 func Int16s(key string, nums []int16) Field {
90 return Array(key, int16s(nums))
91 }
92
93
94 func Int8s(key string, nums []int8) Field {
95 return Array(key, int8s(nums))
96 }
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130 func Objects[T zapcore.ObjectMarshaler](key string, values []T) Field {
131 return Array(key, objects[T](values))
132 }
133
134 type objects[T zapcore.ObjectMarshaler] []T
135
136 func (os objects[T]) MarshalLogArray(arr zapcore.ArrayEncoder) error {
137 for _, o := range os {
138 if err := arr.AppendObject(o); err != nil {
139 return err
140 }
141 }
142 return nil
143 }
144
145
146
147 type ObjectMarshalerPtr[T any] interface {
148 *T
149 zapcore.ObjectMarshaler
150 }
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174 func ObjectValues[T any, P ObjectMarshalerPtr[T]](key string, values []T) Field {
175 return Array(key, objectValues[T, P](values))
176 }
177
178 type objectValues[T any, P ObjectMarshalerPtr[T]] []T
179
180 func (os objectValues[T, P]) MarshalLogArray(arr zapcore.ArrayEncoder) error {
181 for i := range os {
182
183
184
185
186
187
188 var p P = &os[i]
189 if err := arr.AppendObject(p); err != nil {
190 return err
191 }
192 }
193 return nil
194 }
195
196
197 func Strings(key string, ss []string) Field {
198 return Array(key, stringArray(ss))
199 }
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216 func Stringers[T fmt.Stringer](key string, values []T) Field {
217 return Array(key, stringers[T](values))
218 }
219
220 type stringers[T fmt.Stringer] []T
221
222 func (os stringers[T]) MarshalLogArray(arr zapcore.ArrayEncoder) error {
223 for _, o := range os {
224 arr.AppendString(o.String())
225 }
226 return nil
227 }
228
229
230 func Times(key string, ts []time.Time) Field {
231 return Array(key, times(ts))
232 }
233
234
235 func Uints(key string, nums []uint) Field {
236 return Array(key, uints(nums))
237 }
238
239
240 func Uint64s(key string, nums []uint64) Field {
241 return Array(key, uint64s(nums))
242 }
243
244
245 func Uint32s(key string, nums []uint32) Field {
246 return Array(key, uint32s(nums))
247 }
248
249
250 func Uint16s(key string, nums []uint16) Field {
251 return Array(key, uint16s(nums))
252 }
253
254
255 func Uint8s(key string, nums []uint8) Field {
256 return Array(key, uint8s(nums))
257 }
258
259
260 func Uintptrs(key string, us []uintptr) Field {
261 return Array(key, uintptrs(us))
262 }
263
264
265 func Errors(key string, errs []error) Field {
266 return Array(key, errArray(errs))
267 }
268
269 type bools []bool
270
271 func (bs bools) MarshalLogArray(arr zapcore.ArrayEncoder) error {
272 for i := range bs {
273 arr.AppendBool(bs[i])
274 }
275 return nil
276 }
277
278 type byteStringsArray [][]byte
279
280 func (bss byteStringsArray) MarshalLogArray(arr zapcore.ArrayEncoder) error {
281 for i := range bss {
282 arr.AppendByteString(bss[i])
283 }
284 return nil
285 }
286
287 type complex128s []complex128
288
289 func (nums complex128s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
290 for i := range nums {
291 arr.AppendComplex128(nums[i])
292 }
293 return nil
294 }
295
296 type complex64s []complex64
297
298 func (nums complex64s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
299 for i := range nums {
300 arr.AppendComplex64(nums[i])
301 }
302 return nil
303 }
304
305 type durations []time.Duration
306
307 func (ds durations) MarshalLogArray(arr zapcore.ArrayEncoder) error {
308 for i := range ds {
309 arr.AppendDuration(ds[i])
310 }
311 return nil
312 }
313
314 type float64s []float64
315
316 func (nums float64s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
317 for i := range nums {
318 arr.AppendFloat64(nums[i])
319 }
320 return nil
321 }
322
323 type float32s []float32
324
325 func (nums float32s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
326 for i := range nums {
327 arr.AppendFloat32(nums[i])
328 }
329 return nil
330 }
331
332 type ints []int
333
334 func (nums ints) MarshalLogArray(arr zapcore.ArrayEncoder) error {
335 for i := range nums {
336 arr.AppendInt(nums[i])
337 }
338 return nil
339 }
340
341 type int64s []int64
342
343 func (nums int64s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
344 for i := range nums {
345 arr.AppendInt64(nums[i])
346 }
347 return nil
348 }
349
350 type int32s []int32
351
352 func (nums int32s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
353 for i := range nums {
354 arr.AppendInt32(nums[i])
355 }
356 return nil
357 }
358
359 type int16s []int16
360
361 func (nums int16s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
362 for i := range nums {
363 arr.AppendInt16(nums[i])
364 }
365 return nil
366 }
367
368 type int8s []int8
369
370 func (nums int8s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
371 for i := range nums {
372 arr.AppendInt8(nums[i])
373 }
374 return nil
375 }
376
377 type stringArray []string
378
379 func (ss stringArray) MarshalLogArray(arr zapcore.ArrayEncoder) error {
380 for i := range ss {
381 arr.AppendString(ss[i])
382 }
383 return nil
384 }
385
386 type times []time.Time
387
388 func (ts times) MarshalLogArray(arr zapcore.ArrayEncoder) error {
389 for i := range ts {
390 arr.AppendTime(ts[i])
391 }
392 return nil
393 }
394
395 type uints []uint
396
397 func (nums uints) MarshalLogArray(arr zapcore.ArrayEncoder) error {
398 for i := range nums {
399 arr.AppendUint(nums[i])
400 }
401 return nil
402 }
403
404 type uint64s []uint64
405
406 func (nums uint64s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
407 for i := range nums {
408 arr.AppendUint64(nums[i])
409 }
410 return nil
411 }
412
413 type uint32s []uint32
414
415 func (nums uint32s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
416 for i := range nums {
417 arr.AppendUint32(nums[i])
418 }
419 return nil
420 }
421
422 type uint16s []uint16
423
424 func (nums uint16s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
425 for i := range nums {
426 arr.AppendUint16(nums[i])
427 }
428 return nil
429 }
430
431 type uint8s []uint8
432
433 func (nums uint8s) MarshalLogArray(arr zapcore.ArrayEncoder) error {
434 for i := range nums {
435 arr.AppendUint8(nums[i])
436 }
437 return nil
438 }
439
440 type uintptrs []uintptr
441
442 func (nums uintptrs) MarshalLogArray(arr zapcore.ArrayEncoder) error {
443 for i := range nums {
444 arr.AppendUintptr(nums[i])
445 }
446 return nil
447 }
448
View as plain text