summaryrefslogtreecommitdiffstats
path: root/vendor/go.uber.org/zap/zapcore/field.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/go.uber.org/zap/zapcore/field.go')
-rw-r--r--vendor/go.uber.org/zap/zapcore/field.go13
1 files changed, 12 insertions, 1 deletions
diff --git a/vendor/go.uber.org/zap/zapcore/field.go b/vendor/go.uber.org/zap/zapcore/field.go
index 6a5e33e2..ae772e4a 100644
--- a/vendor/go.uber.org/zap/zapcore/field.go
+++ b/vendor/go.uber.org/zap/zapcore/field.go
@@ -160,7 +160,7 @@ func (f Field) AddTo(enc ObjectEncoder) {
case NamespaceType:
enc.OpenNamespace(f.Key)
case StringerType:
- enc.AddString(f.Key, f.Interface.(fmt.Stringer).String())
+ err = encodeStringer(f.Key, f.Interface, enc)
case ErrorType:
encodeError(f.Key, f.Interface.(error), enc)
case SkipType:
@@ -199,3 +199,14 @@ func addFields(enc ObjectEncoder, fields []Field) {
fields[i].AddTo(enc)
}
}
+
+func encodeStringer(key string, stringer interface{}, enc ObjectEncoder) (err error) {
+ defer func() {
+ if v := recover(); v != nil {
+ err = fmt.Errorf("PANIC=%v", v)
+ }
+ }()
+
+ enc.AddString(key, stringer.(fmt.Stringer).String())
+ return
+}