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 }