gitlab.com/jfprevost/gitlab-runner-notlscheck@v11.11.4+incompatible/log/system_logger.go (about)

     1  package log
     2  
     3  import (
     4  	"github.com/ayufan/golang-kardianos-service"
     5  	"github.com/sirupsen/logrus"
     6  )
     7  
     8  type systemLogger interface {
     9  	service.Logger
    10  }
    11  
    12  type systemService interface {
    13  	service.Service
    14  }
    15  
    16  type SystemServiceLogHook struct {
    17  	systemLogger
    18  	Level logrus.Level
    19  }
    20  
    21  func (s *SystemServiceLogHook) Levels() []logrus.Level {
    22  	return []logrus.Level{
    23  		logrus.PanicLevel,
    24  		logrus.FatalLevel,
    25  		logrus.ErrorLevel,
    26  		logrus.WarnLevel,
    27  		logrus.InfoLevel,
    28  	}
    29  }
    30  
    31  func (s *SystemServiceLogHook) Fire(entry *logrus.Entry) error {
    32  	if entry.Level > s.Level {
    33  		return nil
    34  	}
    35  
    36  	msg, err := entry.String()
    37  	if err != nil {
    38  		return err
    39  	}
    40  
    41  	switch entry.Level {
    42  	case logrus.PanicLevel, logrus.FatalLevel, logrus.ErrorLevel:
    43  		s.Error(msg)
    44  	case logrus.WarnLevel:
    45  		s.Warning(msg)
    46  	case logrus.InfoLevel:
    47  		s.Info(msg)
    48  	}
    49  
    50  	return nil
    51  }
    52  
    53  func SetSystemLogger(logrusLogger *logrus.Logger, svc systemService) {
    54  	logger, err := svc.SystemLogger(nil)
    55  
    56  	if err == nil {
    57  		hook := new(SystemServiceLogHook)
    58  		hook.systemLogger = logger
    59  		hook.Level = logrus.GetLevel()
    60  
    61  		logrusLogger.AddHook(hook)
    62  	} else {
    63  		logrusLogger.WithError(err).Error("Error while setting up the system logger")
    64  	}
    65  }