From 084fb2a55eafa6e78ca75543fff3d28bb55e4bb5 Mon Sep 17 00:00:00 2001 From: Arata Sato <14242642+atrn0@users.noreply.github.com> Date: Tue, 8 Jun 2021 08:21:01 +0900 Subject: [PATCH] SugaredLogger/sweetenFields: Don't panic (#949) SugaredLogger should not cause panics in user code. For keys without matching values or non-string keys, instead of panicking, log an error and move on. Resolves #896 --- sugar.go | 4 ++-- sugar_test.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sugar.go b/sugar.go index 4084dada7..0b9651981 100644 --- a/sugar.go +++ b/sugar.go @@ -266,7 +266,7 @@ func (s *SugaredLogger) sweetenFields(args []interface{}) []Field { // Make sure this element isn't a dangling key. if i == len(args)-1 { - s.base.DPanic(_oddNumberErrMsg, Any("ignored", args[i])) + s.base.Error(_oddNumberErrMsg, Any("ignored", args[i])) break } @@ -287,7 +287,7 @@ func (s *SugaredLogger) sweetenFields(args []interface{}) []Field { // If we encountered any invalid key-value pairs, log an error. if len(invalid) > 0 { - s.base.DPanic(_nonStringKeyErrMsg, Array("invalid", invalid)) + s.base.Error(_nonStringKeyErrMsg, Array("invalid", invalid)) } return fields } diff --git a/sugar_test.go b/sugar_test.go index ac7b92064..a68f7b5f5 100644 --- a/sugar_test.go +++ b/sugar_test.go @@ -36,13 +36,13 @@ func TestSugarWith(t *testing.T) { // Convenience functions to create expected error logs. ignored := func(msg interface{}) observer.LoggedEntry { return observer.LoggedEntry{ - Entry: zapcore.Entry{Level: DPanicLevel, Message: _oddNumberErrMsg}, + Entry: zapcore.Entry{Level: ErrorLevel, Message: _oddNumberErrMsg}, Context: []Field{Any("ignored", msg)}, } } nonString := func(pairs ...invalidPair) observer.LoggedEntry { return observer.LoggedEntry{ - Entry: zapcore.Entry{Level: DPanicLevel, Message: _nonStringKeyErrMsg}, + Entry: zapcore.Entry{Level: ErrorLevel, Message: _nonStringKeyErrMsg}, Context: []Field{Array("invalid", invalidPairs(pairs))}, } }