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 }