Merge pull request #76 from meatballhat/save-entry-string-for-panic
Panic with entry instead of entry string
diff --git a/entry.go b/entry.go
index a77c4b0..e164eec 100644
--- a/entry.go
+++ b/entry.go
@@ -100,7 +100,7 @@
// panic() to use in Entry#Panic(), we avoid the allocation by checking
// directly here.
if level <= PanicLevel {
- panic(reader.String())
+ panic(entry)
}
}
diff --git a/entry_test.go b/entry_test.go
new file mode 100644
index 0000000..98717df
--- /dev/null
+++ b/entry_test.go
@@ -0,0 +1,53 @@
+package logrus
+
+import (
+ "bytes"
+ "fmt"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestEntryPanicln(t *testing.T) {
+ errBoom := fmt.Errorf("boom time")
+
+ 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).Panicln("kaboom")
+}
+
+func TestEntryPanicf(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 true", 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).Panicf("kaboom %v", true)
+}
diff --git a/examples/basic/basic.go b/examples/basic/basic.go
index 3594550..a62ba45 100644
--- a/examples/basic/basic.go
+++ b/examples/basic/basic.go
@@ -12,6 +12,17 @@
}
func main() {
+ defer func() {
+ err := recover()
+ if err != nil {
+ log.WithFields(logrus.Fields{
+ "omg": true,
+ "err": err,
+ "number": 100,
+ }).Fatal("The ice breaks!")
+ }
+ }()
+
log.WithFields(logrus.Fields{
"animal": "walrus",
"size": 10,
@@ -23,7 +34,7 @@
}).Warn("The group's number increased tremendously!")
log.WithFields(logrus.Fields{
- "omg": true,
- "number": 100,
- }).Fatal("The ice breaks!")
+ "animal": "orca",
+ "size": 9009,
+ }).Panic("It's over 9000!")
}