Skip to content

Commit c9b228e

Browse files
committed
feat: support to inject tracerProvider
1 parent e540a20 commit c9b228e

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

observability/opentelemetry/v2/client/otel_observability_service.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import (
2424

2525
// OTelObservabilityService implements the ObservabilityService interface from cloudevents
2626
type OTelObservabilityService struct {
27+
traceProvider trace.TracerProvider
28+
2729
tracer trace.Tracer
2830
spanAttributesGetter func(cloudevents.Event) []attribute.KeyValue
2931
spanNameFormatter func(cloudevents.Event) string
@@ -34,11 +36,8 @@ func NewOTelObservabilityService(opts ...OTelObservabilityServiceOption) *OTelOb
3436
tracerProvider := otel.GetTracerProvider()
3537

3638
o := &OTelObservabilityService{
37-
tracer: tracerProvider.Tracer(
38-
instrumentationName,
39-
// TODO: Can we have the package version here?
40-
// trace.WithInstrumentationVersion("1.0.0"),
41-
),
39+
traceProvider: tracerProvider,
40+
tracer: nil,
4241
spanNameFormatter: defaultSpanNameFormatter,
4342
}
4443

@@ -47,6 +46,12 @@ func NewOTelObservabilityService(opts ...OTelObservabilityServiceOption) *OTelOb
4746
opt(o)
4847
}
4948

49+
o.tracer = o.traceProvider.Tracer(
50+
instrumentationName,
51+
// TODO: Can we have the package version here?
52+
// trace.WithInstrumentationVersion("1.0.0"),
53+
)
54+
5055
return o
5156
}
5257

observability/opentelemetry/v2/client/otel_options.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package client
77

88
import (
99
"go.opentelemetry.io/otel/attribute"
10+
"go.opentelemetry.io/otel/trace"
1011

1112
cloudevents "github.com/cloudevents/sdk-go/v2"
1213
"github.com/cloudevents/sdk-go/v2/observability"
@@ -37,6 +38,15 @@ func WithSpanNameFormatter(nameFormatter func(cloudevents.Event) string) OTelObs
3738
}
3839
}
3940

41+
// WithTracerProvider sets the tracer provider to use for creating spans.
42+
func WithTracerProvider(tracerProvider trace.TracerProvider) OTelObservabilityServiceOption {
43+
return func(os *OTelObservabilityService) {
44+
if tracerProvider != nil {
45+
os.traceProvider = tracerProvider
46+
}
47+
}
48+
}
49+
4050
var defaultSpanNameFormatter func(cloudevents.Event) string = func(e cloudevents.Event) string {
4151
return observability.ClientSpanName + "." + e.Context.GetType()
4252
}

0 commit comments

Comments
 (0)