Skip to content

Commit d3984fe

Browse files
committed
Add support for object configuration for encoder fields
1 parent 9f4b479 commit d3984fe

File tree

2 files changed

+49
-6
lines changed

2 files changed

+49
-6
lines changed

encoder.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,49 @@ type encoderFieldsConfig struct {
330330
}
331331

332332
func (c *encoderFieldsConfig) UnmarshalYAML(unmarshal func(any) error) error {
333+
object := make(map[string]any)
334+
if err := unmarshal(&object); err == nil {
335+
for name, value := range object {
336+
bytes, err := yaml.Marshal(value)
337+
if err != nil {
338+
return err
339+
}
340+
switch name {
341+
case "message":
342+
c.Message = &messageEncoderConfig{}
343+
if err := yaml.Unmarshal(bytes, c.Message); err != nil {
344+
return err
345+
}
346+
case "name":
347+
c.Name = &nameEncoderConfig{}
348+
if err := yaml.Unmarshal(bytes, c.Name); err != nil {
349+
return err
350+
}
351+
case "level":
352+
c.Level = &levelEncoderConfig{}
353+
if err := yaml.Unmarshal(bytes, c.Level); err != nil {
354+
return err
355+
}
356+
case "timestamp":
357+
c.Time = &timestampEncoderConfig{}
358+
if err := yaml.Unmarshal(bytes, c.Time); err != nil {
359+
return err
360+
}
361+
case "caller":
362+
c.Caller = &callerEncoderConfig{}
363+
if err := yaml.Unmarshal(bytes, c.Caller); err != nil {
364+
return err
365+
}
366+
case "stacktrace":
367+
c.Stacktrace = &stacktraceEncoderConfig{}
368+
if err := yaml.Unmarshal(bytes, c.Stacktrace); err != nil {
369+
return err
370+
}
371+
}
372+
}
373+
return nil
374+
}
375+
333376
var fields []encoderFieldSchema
334377
if err := unmarshal(&fields); err != nil {
335378
return err

encoder_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ import (
1313
const testEncoders = `
1414
console:
1515
fields:
16-
- message
17-
- level:
18-
key: the-level
19-
- timestamp:
20-
format: unix
21-
- caller
16+
message:
17+
level:
18+
key: the-level
19+
timestamp:
20+
format: unix
21+
caller:
2222
json:
2323
fields:
2424
- message

0 commit comments

Comments
 (0)