use std::borrow::Cow;
use crate::{logs::LogRecord, InstrumentationScope};
#[cfg(feature = "spec_unstable_logs_enabled")]
use super::Severity;
pub trait Logger {
type LogRecord: LogRecord;
fn create_log_record(&self) -> Self::LogRecord;
fn emit(&self, record: Self::LogRecord);
#[cfg(feature = "spec_unstable_logs_enabled")]
fn event_enabled(&self, level: Severity, target: &str, name: Option<&str>) -> bool;
}
pub trait LoggerProvider {
type Logger: Logger;
fn logger_with_scope(&self, scope: InstrumentationScope) -> Self::Logger;
fn logger(&self, name: impl Into<Cow<'static, str>>) -> Self::Logger {
let scope = InstrumentationScope::builder(name).build();
self.logger_with_scope(scope)
}
}