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

     1  package emitter
     2  
     3  import (
     4  	"strings"
     5  
     6  	"code.cloudfoundry.org/lager"
     7  	"github.com/pf-qiu/concourse/v6/atc/metric"
     8  )
     9  
    10  type LagerEmitter struct{}
    11  
    12  type LagerConfig struct {
    13  	Enabled bool `long:"emit-to-logs" description:"Emit metrics to logs."`
    14  }
    15  
    16  func init() {
    17  	metric.Metrics.RegisterEmitter(&LagerConfig{})
    18  }
    19  
    20  func (config *LagerConfig) Description() string { return "Lager" }
    21  func (config *LagerConfig) IsConfigured() bool  { return config.Enabled }
    22  
    23  func (config *LagerConfig) NewEmitter() (metric.Emitter, error) {
    24  	return &LagerEmitter{}, nil
    25  }
    26  
    27  func (emitter *LagerEmitter) Emit(logger lager.Logger, event metric.Event) {
    28  	data := lager.Data{
    29  		"name":  event.Name,
    30  		"value": event.Value,
    31  	}
    32  
    33  	for k, v := range event.Attributes {
    34  		// normalize on foo-bar rather than foo_bar
    35  		lagerKey := strings.Replace(k, "_", "-", -1)
    36  		data[lagerKey] = v
    37  	}
    38  
    39  	logger.Debug("event", data)
    40  }