fields.go raw
1 package log
2
3 import (
4 "slices"
5 )
6
7 // Fields is a helper type used for logging
8 type Fields map[string]interface{}
9
10 // Fields implements Fielder.
11 func (f Fields) Fields() Fields {
12 return f
13 }
14
15 // Get returns flatten Fields map
16 func (f Fields) Get() []any {
17
18 keys := make([]string, 0, len(f))
19 for key := range f {
20 keys = append(keys, key)
21 }
22 // Sort keys for consistent output
23 slices.Sort(keys)
24
25 out := make([]any, 0, len(f)*2)
26 for _, key := range keys {
27 out = append(out, key, f[key])
28 }
29 return out
30 }
31
32 // Fielder interface allows for creating custom Fields
33 type Fielder interface {
34 Fields() Fields
35 }
36