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  }