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