-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathencoder_config.go
90 lines (77 loc) · 2.34 KB
/
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package logfjournald
import "github.com/ssgreg/logf"
// Default field keys.
const (
DefaultFieldKeyLevel = "LEVEL"
DefaultFieldKeyTime = "TS"
DefaultFieldKeyName = "LOGGER"
DefaultFieldKeyCaller = "CALLER"
// Systemd journal dependent field keys.
DefaultFieldKeyPriority = "PRIORITY"
DefaultFieldKeyMessage = "MESSAGE"
)
// EncoderConfig allows to configure journal Encoder.
//
// Note that PRIORITY and MESSAGE field names could not be configured.
// Both PRIORITY and FieldKeyLevel fields are usable.
// - PRIORITY allows to use journal native features such as
// filtering and color highlighting.
// - FieldKeyLevel allows to check original severity level.
//
type EncoderConfig struct {
FieldKeyTime string
FieldKeyLevel string
FieldKeyName string
FieldKeyCaller string
// DisableFieldLevel disabled the Time field.
// Native journal's time field (when the message was added to the
// journal) stayes enabled.
DisableFieldTime bool
// DisableFieldLevel disables the Level field.
DisableFieldLevel bool
// DisableFieldPriority disables the native journal's PRIORITY field.
DisableFieldPriority bool
// DisableFieldName disables the logger name filed.
DisableFieldName bool
// DisableFieldCaller disables the caller field.
DisableFieldCaller bool
EncodeTime logf.TimeEncoder
EncodeDuration logf.DurationEncoder
EncodeError logf.ErrorEncoder
EncodeLevel logf.LevelEncoder
EncodeCaller logf.CallerEncoder
}
// WithDefaults returns the new config in which all uninitialized fields are
// filled with their default values.
func (c EncoderConfig) WithDefaults() EncoderConfig {
// Handle default for predefined field names.
if c.FieldKeyLevel == "" {
c.FieldKeyLevel = DefaultFieldKeyLevel
}
if c.FieldKeyTime == "" {
c.FieldKeyTime = DefaultFieldKeyTime
}
if c.FieldKeyName == "" {
c.FieldKeyName = DefaultFieldKeyName
}
if c.FieldKeyCaller == "" {
c.FieldKeyCaller = DefaultFieldKeyCaller
}
// Handle defaults for type encoder.
if c.EncodeDuration == nil {
c.EncodeDuration = logf.StringDurationEncoder
}
if c.EncodeTime == nil {
c.EncodeTime = logf.RFC3339NanoTimeEncoder
}
if c.EncodeError == nil {
c.EncodeError = logf.DefaultErrorEncoder
}
if c.EncodeLevel == nil {
c.EncodeLevel = logf.DefaultLevelEncoder
}
if c.EncodeCaller == nil {
c.EncodeCaller = logf.ShortCallerEncoder
}
return c
}