1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3 4 package sdk
5 6 import (
7 "go.opentelemetry.io/otel/trace"
8 "go.opentelemetry.io/otel/trace/noop"
9 )
10 11 // TracerProvider returns an auto-instrumentable [trace.TracerProvider].
12 //
13 // If an [go.opentelemetry.io/auto.Instrumentation] is configured to instrument
14 // the process using the returned TracerProvider, all of the telemetry it
15 // produces will be processed and handled by that Instrumentation. By default,
16 // if no Instrumentation instruments the TracerProvider it will not generate
17 // any trace telemetry.
18 func TracerProvider() trace.TracerProvider { return tracerProviderInstance }
19 20 var tracerProviderInstance = new(tracerProvider)
21 22 type tracerProvider struct{ noop.TracerProvider }
23 24 var _ trace.TracerProvider = tracerProvider{}
25 26 func (p tracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.Tracer {
27 cfg := trace.NewTracerConfig(opts...)
28 return tracer{
29 name: name,
30 version: cfg.InstrumentationVersion(),
31 schemaURL: cfg.SchemaURL(),
32 }
33 }
34