trace.go 1.1 KB

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