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  }