trace.go

 1// Copyright The OpenTelemetry Authors
 2// SPDX-License-Identifier: Apache-2.0
 3
 4package otel // import "go.opentelemetry.io/otel"
 5
 6import (
 7	"go.opentelemetry.io/otel/internal/global"
 8	"go.opentelemetry.io/otel/trace"
 9)
10
11// Tracer creates a named tracer that implements Tracer interface.
12// If the name is an empty string then provider uses default name.
13//
14// This is short for GetTracerProvider().Tracer(name, opts...)
15func Tracer(name string, opts ...trace.TracerOption) trace.Tracer {
16	return GetTracerProvider().Tracer(name, opts...)
17}
18
19// GetTracerProvider returns the registered global trace provider.
20// If none is registered then an instance of NoopTracerProvider is returned.
21//
22// Use the trace provider to create a named tracer. E.g.
23//
24//	tracer := otel.GetTracerProvider().Tracer("example.com/foo")
25//
26// or
27//
28//	tracer := otel.Tracer("example.com/foo")
29func GetTracerProvider() trace.TracerProvider {
30	return global.TracerProvider()
31}
32
33// SetTracerProvider registers `tp` as the global trace provider.
34func SetTracerProvider(tp trace.TracerProvider) {
35	global.SetTracerProvider(tp)
36}