diff --git a/entry.go b/entry.go index 2e87f5f3f..1e32a64f7 100644 --- a/entry.go +++ b/entry.go @@ -317,7 +317,6 @@ func (entry *Entry) Fatal(args ...interface{}) { func (entry *Entry) Panic(args ...interface{}) { entry.Log(PanicLevel, args...) - panic(fmt.Sprint(args...)) } // Entry Printf family functions diff --git a/entry_test.go b/entry_test.go index b98e14ad6..df687adee 100644 --- a/entry_test.go +++ b/entry_test.go @@ -167,6 +167,28 @@ func TestEntryPanicf(t *testing.T) { entry.WithField("err", errBoom).Panicf("kaboom %v", true) } +func TestEntryPanic(t *testing.T) { + errBoom := fmt.Errorf("boom again") + + defer func() { + p := recover() + assert.NotNil(t, p) + + switch pVal := p.(type) { + case *Entry: + assert.Equal(t, "kaboom", pVal.Message) + assert.Equal(t, errBoom, pVal.Data["err"]) + default: + t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal) + } + }() + + logger := New() + logger.Out = &bytes.Buffer{} + entry := NewEntry(logger) + entry.WithField("err", errBoom).Panic("kaboom") +} + const ( badMessage = "this is going to panic" panicMessage = "this is broken"