diff --git a/component/componenttest/nop_telemetry.go b/component/componenttest/nop_telemetry.go index 8df6639f1d9..12e2b51d3d7 100644 --- a/component/componenttest/nop_telemetry.go +++ b/component/componenttest/nop_telemetry.go @@ -16,11 +16,11 @@ import ( // NewNopTelemetrySettings returns a new nop telemetry settings for Create* functions. func NewNopTelemetrySettings() component.TelemetrySettings { return component.TelemetrySettings{ - Logger: zap.NewNop(), - SampledLogger: zap.NewNop, - TracerProvider: trace.NewNoopTracerProvider(), - MeterProvider: noop.NewMeterProvider(), - MetricsLevel: configtelemetry.LevelNone, - Resource: pcommon.NewResource(), + Logger: zap.NewNop(), + GetSampledLoggerFunction: zap.NewNop, + TracerProvider: trace.NewNoopTracerProvider(), + MeterProvider: noop.NewMeterProvider(), + MetricsLevel: configtelemetry.LevelNone, + Resource: pcommon.NewResource(), } } diff --git a/component/telemetry.go b/component/telemetry.go index 96c7e606a15..b9cac6a4ed1 100644 --- a/component/telemetry.go +++ b/component/telemetry.go @@ -17,10 +17,8 @@ type TelemetrySettings struct { // component to be used later as well. Logger *zap.Logger - // SampledLogger is built from the logger. It is passed to the created component. - // It will be used to avoid flooding the logs with messages that are repeated frequently. - // It will be built the first time used. - SampledLogger func() *zap.Logger + // GetSampledLoggerFunction is a function to get the sampled Logger + GetSampledLoggerFunction func() *zap.Logger // TracerProvider that the factory can pass to other instrumented third-party libraries. TracerProvider trace.TracerProvider @@ -35,3 +33,10 @@ type TelemetrySettings struct { // Resource contains the resource attributes for the collector's telemetry. Resource pcommon.Resource } + +// SampledLogger is built from the logger. It is passed to the created component. +// It will be used to avoid flooding the logs with messages that are repeated frequently. +// It will be built the first time used. +func (t *TelemetrySettings) SampledLogger() *zap.Logger { + return t.GetSampledLoggerFunction() +} diff --git a/service/service.go b/service/service.go index ebcb4917b78..1714a89f2c2 100644 --- a/service/service.go +++ b/service/service.go @@ -105,11 +105,11 @@ func New(ctx context.Context, set Settings, cfg Config) (*Service, error) { pcommonRes := pdataFromSdk(res) srv.telemetrySettings = component.TelemetrySettings{ - Logger: srv.telemetry.Logger(), - SampledLogger: srv.telemetry.SampledLogger(), - TracerProvider: srv.telemetry.TracerProvider(), - MeterProvider: noop.NewMeterProvider(), - MetricsLevel: cfg.Telemetry.Metrics.Level, + Logger: srv.telemetry.Logger(), + GetSampledLoggerFunction: srv.telemetry.SampledLogger(), + TracerProvider: srv.telemetry.TracerProvider(), + MeterProvider: noop.NewMeterProvider(), + MetricsLevel: cfg.Telemetry.Metrics.Level, // Construct telemetry attributes from build info and config's resource attributes. Resource: pcommonRes, diff --git a/service/service_test.go b/service/service_test.go index bc023fa353b..97c618efb8b 100644 --- a/service/service_test.go +++ b/service/service_test.go @@ -412,8 +412,10 @@ func TestServiceTelemetryLoggers(t *testing.T) { assert.NoError(t, srv.Shutdown(context.Background())) }) assert.NotNil(t, srv.telemetrySettings.Logger) - assert.NotNil(t, srv.telemetrySettings.SampledLogger()) + assert.NotNil(t, srv.telemetrySettings.GetSampledLoggerFunction) assert.NotEqual(t, srv.telemetrySettings.Logger, srv.telemetrySettings.SampledLogger()) + sampledLogger := srv.telemetrySettings.GetSampledLoggerFunction() + assert.Equal(t, sampledLogger, srv.telemetrySettings.SampledLogger()) } func assertResourceLabels(t *testing.T, res pcommon.Resource, expectedLabels map[string]labelValue) {