diff --git a/.chloggen/dd-logger.yaml b/.chloggen/dd-logger.yaml new file mode 100644 index 0000000000000..c5187f859e7f1 --- /dev/null +++ b/.chloggen/dd-logger.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: pkg/datadog + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Expose the internal Zaplogger implementation + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [37939] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [api] diff --git a/exporter/datadogexporter/agent_components.go b/exporter/datadogexporter/agent_components.go index dcfa31e6cf165..05fa83d3ee0d7 100644 --- a/exporter/datadogexporter/agent_components.go +++ b/exporter/datadogexporter/agent_components.go @@ -12,11 +12,13 @@ import ( pkgconfigmodel "github.com/DataDog/datadog-agent/pkg/config/model" pkgconfigsetup "github.com/DataDog/datadog-agent/pkg/config/setup" "go.opentelemetry.io/collector/component" + + pkgdatadog "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog" ) func newLogComponent(set component.TelemetrySettings) corelog.Component { - zlog := &zaplogger{ - logger: set.Logger, + zlog := &pkgdatadog.Zaplogger{ + Logger: set.Logger, } return zlog } diff --git a/exporter/datadogexporter/traces_exporter.go b/exporter/datadogexporter/traces_exporter.go index 42cdce4ee4623..4223fc5c88b3f 100644 --- a/exporter/datadogexporter/traces_exporter.go +++ b/exporter/datadogexporter/traces_exporter.go @@ -254,6 +254,6 @@ func newTraceAgentConfig(ctx context.Context, params exporter.Settings, cfg *Con if !datadog.ReceiveResourceSpansV2FeatureGate.IsEnabled() { acfg.Features["disable_receive_resource_spans_v2"] = struct{}{} } - tracelog.SetLogger(&zaplogger{params.Logger}) // TODO: This shouldn't be a singleton + tracelog.SetLogger(&datadog.Zaplogger{Logger: params.Logger}) // TODO: This shouldn't be a singleton return acfg, nil } diff --git a/exporter/datadogexporter/zaplogger.go b/exporter/datadogexporter/zaplogger.go deleted file mode 100644 index bd9e09ae1e85b..0000000000000 --- a/exporter/datadogexporter/zaplogger.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package datadogexporter // import "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/datadogexporter" - -import ( - "fmt" - - "go.uber.org/zap" -) - -// zaplogger implements the tracelog.Logger interface on top of a zap.Logger -type zaplogger struct{ logger *zap.Logger } - -// Trace implements Logger. -func (z *zaplogger) Trace(_ ...any) { /* N/A */ } - -// Tracef implements Logger. -func (z *zaplogger) Tracef(_ string, _ ...any) { /* N/A */ } - -// Debug implements Logger. -func (z *zaplogger) Debug(v ...any) { - z.logger.Debug(fmt.Sprint(v...)) -} - -// Debugf implements Logger. -func (z *zaplogger) Debugf(format string, params ...any) { - z.logger.Debug(fmt.Sprintf(format, params...)) -} - -// Info implements Logger. -func (z *zaplogger) Info(v ...any) { - z.logger.Info(fmt.Sprint(v...)) -} - -// Infof implements Logger. -func (z *zaplogger) Infof(format string, params ...any) { - z.logger.Info(fmt.Sprintf(format, params...)) -} - -// Warn implements Logger. -func (z *zaplogger) Warn(v ...any) error { - z.logger.Warn(fmt.Sprint(v...)) - return nil -} - -// Warnf implements Logger. -func (z *zaplogger) Warnf(format string, params ...any) error { - z.logger.Warn(fmt.Sprintf(format, params...)) - return nil -} - -// Error implements Logger. -func (z *zaplogger) Error(v ...any) error { - z.logger.Error(fmt.Sprint(v...)) - return nil -} - -// Errorf implements Logger. -func (z *zaplogger) Errorf(format string, params ...any) error { - z.logger.Error(fmt.Sprintf(format, params...)) - return nil -} - -// Critical implements Logger. -func (z *zaplogger) Critical(v ...any) error { - z.logger.Error(fmt.Sprint(v...), zap.Bool("critical", true)) - return nil -} - -// Criticalf implements Logger. -func (z *zaplogger) Criticalf(format string, params ...any) error { - z.logger.Error(fmt.Sprintf(format, params...), zap.Bool("critical", true)) - return nil -} - -// Flush implements Logger. -func (z *zaplogger) Flush() { - _ = z.logger.Sync() -} diff --git a/pkg/datadog/go.mod b/pkg/datadog/go.mod index 2ab7446d192d9..c780ae3fcd509 100644 --- a/pkg/datadog/go.mod +++ b/pkg/datadog/go.mod @@ -3,6 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog go 1.23.0 require ( + github.com/DataDog/datadog-agent/pkg/trace v0.62.2 github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.62.2 github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.25.0 github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/metrics v0.25.0 @@ -34,7 +35,7 @@ require ( github.com/DataDog/opentelemetry-mapping-go/pkg/inframetadata v0.25.0 // indirect github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.25.0 // indirect github.com/DataDog/sketches-go v1.4.6 // indirect - github.com/DataDog/zstd v1.5.2 // indirect + github.com/DataDog/zstd v1.5.6 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 // indirect github.com/aws/aws-sdk-go-v2 v1.36.1 // indirect github.com/aws/aws-sdk-go-v2/config v1.29.6 // indirect @@ -136,7 +137,7 @@ require ( golang.org/x/sys v0.29.0 // indirect golang.org/x/term v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect - golang.org/x/time v0.7.0 // indirect + golang.org/x/time v0.8.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241230172942-26aa7a208def // indirect google.golang.org/grpc v1.70.0 // indirect google.golang.org/protobuf v1.36.5 // indirect diff --git a/pkg/datadog/go.sum b/pkg/datadog/go.sum index f22d61f5d0372..d0a85ad84d500 100644 --- a/pkg/datadog/go.sum +++ b/pkg/datadog/go.sum @@ -54,6 +54,8 @@ github.com/DataDog/datadog-agent/pkg/config/teeconfig v0.62.2 h1:u2rELKT/fpFFOEd github.com/DataDog/datadog-agent/pkg/config/teeconfig v0.62.2/go.mod h1:EO/0NFsoCnH2oc89rlojW4EizU1BwKJKfIwaH0vA6og= github.com/DataDog/datadog-agent/pkg/proto v0.64.0-devel h1:tkoy0fLsNkSDDxszdm9EDpzQFGnWUzwjanselsIAC+U= github.com/DataDog/datadog-agent/pkg/proto v0.64.0-devel/go.mod h1:QOAaPRsuM4WNXtP3Rbw+gWamge9lGnDH8ZKB6HdzoAs= +github.com/DataDog/datadog-agent/pkg/trace v0.62.2 h1:cNh40K5cve2Do5Rl4hd6QygA+8HtW7ZJBlOXwQjYX4c= +github.com/DataDog/datadog-agent/pkg/trace v0.62.2/go.mod h1:emSxVBmRslNGZ+VY4boI3Jg7Xk+WHS1CDtpLL00DVKQ= github.com/DataDog/datadog-agent/pkg/util/executable v0.62.2 h1:vEhhL6nIQppnU71aPG5YDcNf1DFFO4iPZ0belWsoxOE= github.com/DataDog/datadog-agent/pkg/util/executable v0.62.2/go.mod h1:qW5HWFQdos50jsH0LoPlWdtP15G5wRCat65YLeyOzf0= github.com/DataDog/datadog-agent/pkg/util/filesystem v0.62.2 h1:Woz3vmafCy33ilL0EzhxvUtpgUcjbmnwap5P1saZURY= @@ -94,8 +96,8 @@ github.com/DataDog/sketches-go v1.4.6 h1:acd5fb+QdUzGrosfNLwrIhqyrbMORpvBy7mE+vH github.com/DataDog/sketches-go v1.4.6/go.mod h1:7Y8GN8Jf66DLyDhc94zuWA3uHEt/7ttt8jHOBWWrSOg= github.com/DataDog/viper v1.14.0 h1:dIjTe/uJiah+QFqFZ+MXeqgmUvWhg37l37ZxFWxr3is= github.com/DataDog/viper v1.14.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= -github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= -github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY= +github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 h1:f2Qw/Ehhimh5uO1fayV0QIW7DShEQqhtUfhYc+cBPlw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0/go.mod h1:2bIszWvQRlJVmJLiuLhukLImRjKPcYdzzsx6darK02A= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= @@ -664,8 +666,8 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= -golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/pkg/datadog/zaplogger.go b/pkg/datadog/zaplogger.go new file mode 100644 index 0000000000000..e6077d9813ae3 --- /dev/null +++ b/pkg/datadog/zaplogger.go @@ -0,0 +1,86 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package datadog // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog" + +import ( + "fmt" + + tracelog "github.com/DataDog/datadog-agent/pkg/trace/log" + "go.uber.org/zap" +) + +var _ tracelog.Logger = &Zaplogger{} + +// Zaplogger implements the tracelog.Logger interface on top of a zap.Logger +type Zaplogger struct { + // Logger is the internal zap logger + Logger *zap.Logger +} + +// Trace implements Logger. +func (z *Zaplogger) Trace(_ ...any) { /* N/A */ } + +// Tracef implements Logger. +func (z *Zaplogger) Tracef(_ string, _ ...any) { /* N/A */ } + +// Debug implements Logger. +func (z *Zaplogger) Debug(v ...any) { + z.Logger.Debug(fmt.Sprint(v...)) +} + +// Debugf implements Logger. +func (z *Zaplogger) Debugf(format string, params ...any) { + z.Logger.Debug(fmt.Sprintf(format, params...)) +} + +// Info implements Logger. +func (z *Zaplogger) Info(v ...any) { + z.Logger.Info(fmt.Sprint(v...)) +} + +// Infof implements Logger. +func (z *Zaplogger) Infof(format string, params ...any) { + z.Logger.Info(fmt.Sprintf(format, params...)) +} + +// Warn implements Logger. +func (z *Zaplogger) Warn(v ...any) error { + z.Logger.Warn(fmt.Sprint(v...)) + return nil +} + +// Warnf implements Logger. +func (z *Zaplogger) Warnf(format string, params ...any) error { + z.Logger.Warn(fmt.Sprintf(format, params...)) + return nil +} + +// Error implements Logger. +func (z *Zaplogger) Error(v ...any) error { + z.Logger.Error(fmt.Sprint(v...)) + return nil +} + +// Errorf implements Logger. +func (z *Zaplogger) Errorf(format string, params ...any) error { + z.Logger.Error(fmt.Sprintf(format, params...)) + return nil +} + +// Critical implements Logger. +func (z *Zaplogger) Critical(v ...any) error { + z.Logger.Error(fmt.Sprint(v...), zap.Bool("critical", true)) + return nil +} + +// Criticalf implements Logger. +func (z *Zaplogger) Criticalf(format string, params ...any) error { + z.Logger.Error(fmt.Sprintf(format, params...), zap.Bool("critical", true)) + return nil +} + +// Flush implements Logger. +func (z *Zaplogger) Flush() { + _ = z.Logger.Sync() +}