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)
}
}
|