Trait TracerProvider

Source
pub trait TracerProvider {
    type Tracer: Tracer;

    // Required method
    fn tracer_with_scope(&self, scope: InstrumentationScope) -> Self::Tracer;

    // Provided method
    fn tracer(&self, name: impl Into<Cow<'static, str>>) -> Self::Tracer { ... }
}
Expand description

Types that can create instances of Tracer.

See the global module for examples of storing and retrieving tracer provider instances.

Required Associated Types§

Source

type Tracer: Tracer

The Tracer type that this provider will return.

Required Methods§

Source

fn tracer_with_scope(&self, scope: InstrumentationScope) -> Self::Tracer

Returns a new versioned tracer with the given instrumentation scope.

§Examples
use opentelemetry::{global, InstrumentationScope, trace::TracerProvider};

let provider = global::tracer_provider();

// tracer used in applications/binaries
let tracer = provider.tracer("my_app");

// tracer used in libraries/crates that optionally includes version and schema url
let scope =
    InstrumentationScope::builder(env!("CARGO_PKG_NAME"))
        .with_version(env!("CARGO_PKG_VERSION"))
        .with_schema_url("https://opentelemetry.io/schema/1.0.0")
        .build();

let tracer = provider.tracer_with_scope(scope);

Provided Methods§

Source

fn tracer(&self, name: impl Into<Cow<'static, str>>) -> Self::Tracer

Returns a new tracer with the given name.

The name should be the application name or the name of the library providing instrumentation. If the name is empty, then an implementation-defined default name may be used instead.

§Examples
use opentelemetry::{global, trace::TracerProvider};
use opentelemetry::KeyValue;

let provider = global::tracer_provider();

// tracer used in applications/binaries
let tracer = provider.tracer("my_app");

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl TracerProvider for SdkTracerProvider

Source§

type Tracer = SdkTracer

This implementation of TracerProvider produces Tracer instances.

Source§

fn tracer( &self, name: impl Into<Cow<'static, str>>, ) -> <SdkTracerProvider as TracerProvider>::Tracer

Source§

fn tracer_with_scope( &self, scope: InstrumentationScope, ) -> <SdkTracerProvider as TracerProvider>::Tracer

Implementors§