pub trait TracerProvider {
    type Tracer: Tracer;

    // Required method
    fn library_tracer(
        &self,
        library: Arc<InstrumentationLibrary>
    ) -> Self::Tracer;

    // Provided methods
    fn tracer(&self, name: impl Into<Cow<'static, str>>) -> Self::Tracer { ... }
    fn versioned_tracer(
        &self,
        name: impl Into<Cow<'static, str>>,
        version: Option<impl Into<Cow<'static, str>>>,
        schema_url: Option<impl Into<Cow<'static, str>>>,
        attributes: Option<Vec<KeyValue>>
    ) -> Self::Tracer { ... }
}
Available on crate feature trace only.
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 library_tracer(&self, library: Arc<InstrumentationLibrary>) -> Self::Tracer

Returns a new versioned tracer with the given instrumentation library.

Examples
use opentelemetry_api::{global, InstrumentationLibrary, 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 library = std::sync::Arc::new(InstrumentationLibrary::new(
    env!("CARGO_PKG_NAME"),
    Some(env!("CARGO_PKG_VERSION")),
    Some("https://opentelemetry.io/schema/1.0.0"),
    None,
));
let tracer = provider.library_tracer(library);

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_api::{global, trace::TracerProvider};
use opentelemetry_api::KeyValue;

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 tracer = provider.versioned_tracer(
    "my_library",
    Some(env!("CARGO_PKG_VERSION")),
    Some("https://opentelemetry.io/schema/1.0.0"),
    Some(vec![KeyValue::new("key", "value")]),
);
source

fn versioned_tracer( &self, name: impl Into<Cow<'static, str>>, version: Option<impl Into<Cow<'static, str>>>, schema_url: Option<impl Into<Cow<'static, str>>>, attributes: Option<Vec<KeyValue>> ) -> Self::Tracer

Returns a new versioned tracer with a 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_api::{global, 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 tracer = provider.versioned_tracer(
    "my_library",
    Some(env!("CARGO_PKG_VERSION")),
    Some("https://opentelemetry.io/schema/1.0.0"),
    None,
);

Implementors§