-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathjson_encoder_config.go
71 lines (64 loc) · 1.63 KB
/
json_encoder_config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package logf
// Default field keys.
const (
DefaultFieldKeyLevel = "level"
DefaultFieldKeyMsg = "msg"
DefaultFieldKeyTime = "ts"
DefaultFieldKeyName = "logger"
DefaultFieldKeyCaller = "caller"
)
// JSONEncoderConfig allows to configure journal JSON Encoder.
type JSONEncoderConfig struct {
FieldKeyMsg string
FieldKeyTime string
FieldKeyLevel string
FieldKeyName string
FieldKeyCaller string
DisableFieldMsg bool
DisableFieldTime bool
DisableFieldLevel bool
DisableFieldName bool
DisableFieldCaller bool
EncodeTime TimeEncoder
EncodeDuration DurationEncoder
EncodeError ErrorEncoder
EncodeLevel LevelEncoder
EncodeCaller CallerEncoder
}
// WithDefaults returns the new config in which all uninitialized fields are
// filled with their default values.
func (c JSONEncoderConfig) WithDefaults() JSONEncoderConfig {
// Handle default for predefined field names.
if c.FieldKeyMsg == "" {
c.FieldKeyMsg = DefaultFieldKeyMsg
}
if c.FieldKeyTime == "" {
c.FieldKeyTime = DefaultFieldKeyTime
}
if c.FieldKeyLevel == "" {
c.FieldKeyLevel = DefaultFieldKeyLevel
}
if c.FieldKeyName == "" {
c.FieldKeyName = DefaultFieldKeyName
}
if c.FieldKeyCaller == "" {
c.FieldKeyCaller = DefaultFieldKeyCaller
}
// Handle defaults for type encoder.
if c.EncodeDuration == nil {
c.EncodeDuration = StringDurationEncoder
}
if c.EncodeTime == nil {
c.EncodeTime = RFC3339TimeEncoder
}
if c.EncodeError == nil {
c.EncodeError = DefaultErrorEncoder
}
if c.EncodeLevel == nil {
c.EncodeLevel = DefaultLevelEncoder
}
if c.EncodeCaller == nil {
c.EncodeCaller = ShortCallerEncoder
}
return c
}