helpers/fatal_panic.go (36 lines of code) (raw):
package helpers
import (
"fmt"
"io"
"github.com/Sirupsen/logrus"
)
type fatalLogHook struct {
output io.Writer
}
func (s *fatalLogHook) Levels() []logrus.Level {
return []logrus.Level{
logrus.FatalLevel,
}
}
func (s *fatalLogHook) Fire(e *logrus.Entry) error {
fmt.Fprint(s.output, e.Message)
panic(e)
}
func MakeFatalToPanic() func() {
hook := &fatalLogHook{
output: logrus.StandardLogger().Out,
}
logrus.AddHook(hook)
removeHook := func() {
for level, levelHooks := range logrus.StandardLogger().Hooks {
hooks := []logrus.Hook{}
for _, existingHook := range levelHooks {
if existingHook != hook {
hooks = append(hooks, existingHook)
}
}
logrus.StandardLogger().Hooks[level] = hooks
}
}
return removeHook
}