github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/metric/error_sink_collector.go (about)

     1  package metric
     2  
     3  import (
     4  	"code.cloudfoundry.org/lager"
     5  	"github.com/pkg/errors"
     6  )
     7  
     8  type ErrorSinkCollector struct {
     9  	logger  lager.Logger
    10  	monitor *Monitor
    11  }
    12  
    13  func NewErrorSinkCollector(logger lager.Logger, m *Monitor) ErrorSinkCollector {
    14  	return ErrorSinkCollector{
    15  		logger:  logger,
    16  		monitor: m,
    17  	}
    18  }
    19  
    20  func (c *ErrorSinkCollector) Log(f lager.LogFormat) {
    21  	if f.LogLevel != lager.ERROR {
    22  		return
    23  	}
    24  
    25  	if errors.Cause(f.Error) == ErrFailedToEmit {
    26  		return
    27  	}
    28  
    29  	ErrorLog{
    30  		Value:   1,
    31  		Message: f.Message,
    32  	}.Emit(c.logger, c.monitor)
    33  }