pub trait LoggerProvider {
    type Logger: Logger;

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

    // Provided methods
    fn versioned_logger(
        &self,
        name: impl Into<Cow<'static, str>>,
        version: Option<Cow<'static, str>>,
        schema_url: Option<Cow<'static, str>>,
        attributes: Option<Vec<KeyValue>>
    ) -> Self::Logger { ... }
    fn logger(&self, name: impl Into<Cow<'static, str>>) -> Self::Logger { ... }
}
Expand description

Interfaces that can create Logger instances.

Required Associated Types§

source

type Logger: Logger

The Logger type that this provider will return.

Required Methods§

source

fn library_logger(&self, library: Arc<InstrumentationLibrary>) -> Self::Logger

Returns a new versioned logger with the given instrumentation library.

Examples
use opentelemetry_api::{global, InstrumentationLibrary, logs::LoggerProvider};

let provider = global::logger_provider();

// logger used in applications/binaries
let logger = provider.logger("my_app");
// logger 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 logger = provider.library_logger(library);

Provided Methods§

source

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

Returns a new versioned logger 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.

source

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

Returns a new logger 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.

Object Safety§

This trait is not object safe.

Implementors§