forked from mirror/logrus
Saving off entry string for use in panic
as the reader is not seekable and without this the panic string is
always empty 🙀
This commit is contained in:
parent
6ebb4e7b3c
commit
ced531341e
7
entry.go
7
entry.go
|
@ -88,10 +88,13 @@ func (entry *Entry) log(level Level, msg string) {
|
||||||
entry.Logger.mu.Unlock()
|
entry.Logger.mu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var panicBuf bytes.Buffer
|
||||||
|
teeOut := io.TeeReader(reader, &panicBuf)
|
||||||
|
|
||||||
entry.Logger.mu.Lock()
|
entry.Logger.mu.Lock()
|
||||||
defer entry.Logger.mu.Unlock()
|
defer entry.Logger.mu.Unlock()
|
||||||
|
|
||||||
_, err = io.Copy(entry.Logger.Out, reader)
|
_, err = io.Copy(entry.Logger.Out, teeOut)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "Failed to write to log, %v\n", err)
|
fmt.Fprintf(os.Stderr, "Failed to write to log, %v\n", err)
|
||||||
}
|
}
|
||||||
|
@ -100,7 +103,7 @@ func (entry *Entry) log(level Level, msg string) {
|
||||||
// panic() to use in Entry#Panic(), we avoid the allocation by checking
|
// panic() to use in Entry#Panic(), we avoid the allocation by checking
|
||||||
// directly here.
|
// directly here.
|
||||||
if level <= PanicLevel {
|
if level <= PanicLevel {
|
||||||
panic(reader.String())
|
panic(panicBuf.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,17 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
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{
|
log.WithFields(logrus.Fields{
|
||||||
"animal": "walrus",
|
"animal": "walrus",
|
||||||
"size": 10,
|
"size": 10,
|
||||||
|
@ -23,7 +34,7 @@ func main() {
|
||||||
}).Warn("The group's number increased tremendously!")
|
}).Warn("The group's number increased tremendously!")
|
||||||
|
|
||||||
log.WithFields(logrus.Fields{
|
log.WithFields(logrus.Fields{
|
||||||
"omg": true,
|
"animal": "orca",
|
||||||
"number": 100,
|
"size": 9009,
|
||||||
}).Fatal("The ice breaks!")
|
}).Panic("It's over 9000!")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue