// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 package sdk import ( "go.opentelemetry.io/otel/trace" "go.opentelemetry.io/otel/trace/noop" ) // TracerProvider returns an auto-instrumentable [trace.TracerProvider]. // // If an [go.opentelemetry.io/auto.Instrumentation] is configured to instrument // the process using the returned TracerProvider, all of the telemetry it // produces will be processed and handled by that Instrumentation. By default, // if no Instrumentation instruments the TracerProvider it will not generate // any trace telemetry. func TracerProvider() trace.TracerProvider { return tracerProviderInstance } var tracerProviderInstance = new(tracerProvider) type tracerProvider struct{ noop.TracerProvider } var _ trace.TracerProvider = tracerProvider{} func (p tracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.Tracer { cfg := trace.NewTracerConfig(opts...) return tracer{ name: name, version: cfg.InstrumentationVersion(), schemaURL: cfg.SchemaURL(), } }