File size: 496 Bytes
9853396
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package log

import (
	"encoding/json"

	"go.uber.org/zap/zapcore"
)

func EncodeAny(encoder zapcore.ObjectEncoder, key string, obj any) error {
	switch raw := obj.(type) {
	case zapcore.ObjectMarshaler:
		return encoder.AddObject(key, raw)
	case json.Marshaler:
		return encoder.AddReflected(key, raw)
	case error:
		// must behind json.Marshaler and ObjectMarshaler
		encoder.AddString(key, raw.Error())
		return nil
	default:
		return encoder.AddReflected(key, raw)
	}
}