github.com/secure-build/gitlab-runner@v12.5.0+incompatible/common/build_logger.go (about) 1 package common 2 3 import ( 4 "fmt" 5 "io" 6 7 "github.com/sirupsen/logrus" 8 9 "gitlab.com/gitlab-org/gitlab-runner/helpers" 10 "gitlab.com/gitlab-org/gitlab-runner/helpers/url" 11 ) 12 13 type BuildLogger struct { 14 log JobTrace 15 entry *logrus.Entry 16 } 17 18 func (e *BuildLogger) WithFields(fields logrus.Fields) BuildLogger { 19 return NewBuildLogger(e.log, e.entry.WithFields(fields)) 20 } 21 22 func (e *BuildLogger) SendRawLog(args ...interface{}) { 23 if e.log != nil { 24 fmt.Fprint(e.log, args...) 25 } 26 } 27 28 func (e *BuildLogger) sendLog(logger func(args ...interface{}), logPrefix string, args ...interface{}) { 29 if e.log != nil { 30 logLine := url_helpers.ScrubSecrets(logPrefix + fmt.Sprintln(args...)) 31 e.SendRawLog(logLine) 32 e.SendRawLog(helpers.ANSI_RESET) 33 34 if e.log.IsStdout() { 35 return 36 } 37 } 38 39 if len(args) == 0 { 40 return 41 } 42 43 logger(args...) 44 } 45 46 func (e *BuildLogger) WriterLevel(level logrus.Level) *io.PipeWriter { 47 return e.entry.WriterLevel(level) 48 } 49 50 func (e *BuildLogger) Debugln(args ...interface{}) { 51 if e.entry == nil { 52 return 53 } 54 e.entry.Debugln(args...) 55 } 56 57 func (e *BuildLogger) Println(args ...interface{}) { 58 if e.entry == nil { 59 return 60 } 61 e.sendLog(e.entry.Debugln, helpers.ANSI_CLEAR, args...) 62 } 63 64 func (e *BuildLogger) Infoln(args ...interface{}) { 65 if e.entry == nil { 66 return 67 } 68 e.sendLog(e.entry.Println, helpers.ANSI_BOLD_GREEN, args...) 69 } 70 71 func (e *BuildLogger) Warningln(args ...interface{}) { 72 if e.entry == nil { 73 return 74 } 75 e.sendLog(e.entry.Warningln, helpers.ANSI_YELLOW+"WARNING: ", args...) 76 } 77 78 func (e *BuildLogger) SoftErrorln(args ...interface{}) { 79 if e.entry == nil { 80 return 81 } 82 e.sendLog(e.entry.Warningln, helpers.ANSI_BOLD_RED+"ERROR: ", args...) 83 } 84 85 func (e *BuildLogger) Errorln(args ...interface{}) { 86 if e.entry == nil { 87 return 88 } 89 e.sendLog(e.entry.Errorln, helpers.ANSI_BOLD_RED+"ERROR: ", args...) 90 } 91 92 func NewBuildLogger(log JobTrace, entry *logrus.Entry) BuildLogger { 93 return BuildLogger{ 94 log: log, 95 entry: entry, 96 } 97 }