github.com/alloyci/alloy-runner@v1.0.1-0.20180222164613-925503ccafd6/helpers/fatal_panic.go (about) 1 package helpers 2 3 import ( 4 "fmt" 5 "io" 6 7 "github.com/Sirupsen/logrus" 8 ) 9 10 type fatalLogHook struct { 11 output io.Writer 12 } 13 14 func (s *fatalLogHook) Levels() []logrus.Level { 15 return []logrus.Level{ 16 logrus.FatalLevel, 17 } 18 } 19 20 func (s *fatalLogHook) Fire(e *logrus.Entry) error { 21 fmt.Fprint(s.output, e.Message) 22 23 panic(e) 24 } 25 26 func MakeFatalToPanic() func() { 27 hook := &fatalLogHook{ 28 output: logrus.StandardLogger().Out, 29 } 30 logrus.AddHook(hook) 31 32 removeHook := func() { 33 for level, levelHooks := range logrus.StandardLogger().Hooks { 34 hooks := []logrus.Hook{} 35 for _, existingHook := range levelHooks { 36 if existingHook != hook { 37 hooks = append(hooks, existingHook) 38 } 39 } 40 logrus.StandardLogger().Hooks[level] = hooks 41 } 42 } 43 44 return removeHook 45 }