github.com/chenbh/concourse/v6@v6.4.2/skymarshal/logger/logger.go (about) 1 package logger 2 3 import ( 4 "io/ioutil" 5 6 "code.cloudfoundry.org/lager" 7 "github.com/sirupsen/logrus" 8 ) 9 10 func New(logger lager.Logger) *logrus.Logger { 11 var log = &logrus.Logger{ 12 Out: ioutil.Discard, 13 Hooks: make(logrus.LevelHooks), 14 Formatter: new(logrus.JSONFormatter), 15 Level: logrus.DebugLevel, 16 } 17 18 log.Hooks.Add(newLagerHook(logger)) 19 return log 20 } 21 22 func newLagerHook(logger lager.Logger) *lagerHook { 23 return &lagerHook{logger} 24 } 25 26 type lagerHook struct { 27 lager.Logger 28 } 29 30 func (lf *lagerHook) Levels() []logrus.Level { 31 return logrus.AllLevels 32 } 33 34 func (lf *lagerHook) Fire(entry *logrus.Entry) error { 35 switch entry.Level { 36 case logrus.DebugLevel: 37 lf.Logger.Debug("event", lager.Data{"message": entry.Message, "fields": entry.Data}) 38 case logrus.InfoLevel: 39 lf.Logger.Info("event", lager.Data{"message": entry.Message, "fields": entry.Data}) 40 case logrus.WarnLevel: 41 lf.Logger.Info("event", lager.Data{"message": entry.Message, "fields": entry.Data}) 42 case logrus.ErrorLevel: 43 lf.Logger.Error("event", nil, lager.Data{"message": entry.Message, "fields": entry.Data}) 44 case logrus.FatalLevel: 45 lf.Logger.Fatal("event", nil, lager.Data{"message": entry.Message, "fields": entry.Data}) 46 case logrus.PanicLevel: 47 lf.Logger.Fatal("event", nil, lager.Data{"message": entry.Message, "fields": entry.Data}) 48 } 49 50 return nil 51 }