Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
fatal_panic.go 565 B
Newer Older
Kamil Trzcinski's avatar
Kamil Trzcinski committed
package helpers

	"github.com/sirupsen/logrus"
Kamil Trzcinski's avatar
Kamil Trzcinski committed

type fatalLogHook struct {
Kamil Trzcinski's avatar
Kamil Trzcinski committed
}

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)

Kamil Trzcinski's avatar
Kamil Trzcinski committed
	panic(e)
}

func MakeFatalToPanic() func() {
	logger := logrus.StandardLogger()
	hooks := make(logrus.LevelHooks)
	hooks.Add(&fatalLogHook{output: logger.Out})
	oldHooks := logger.ReplaceHooks(hooks)

	return func() {
		logger.ReplaceHooks(oldHooks)
	}
Kamil Trzcinski's avatar
Kamil Trzcinski committed
}