use reovim_kernel::api::v1::{Level, Logger, Record};
#[derive(Debug, Clone, Copy, Default)]
pub struct TracingLogger;
#[cfg_attr(coverage_nightly, coverage(off))]
impl Logger for TracingLogger {
fn log(&self, record: &Record) {
match record.level() {
Level::Error => tracing::error!(
module_path = record.module_path(),
file = record.file(),
line = record.line(),
"{}",
record.message()
),
Level::Warn => tracing::warn!(
module_path = record.module_path(),
file = record.file(),
line = record.line(),
"{}",
record.message()
),
Level::Info => tracing::info!(
module_path = record.module_path(),
file = record.file(),
line = record.line(),
"{}",
record.message()
),
Level::Debug => tracing::debug!(
module_path = record.module_path(),
file = record.file(),
line = record.line(),
"{}",
record.message()
),
Level::Trace => tracing::trace!(
module_path = record.module_path(),
file = record.file(),
line = record.line(),
"{}",
record.message()
),
}
}
fn flush(&self) {
}
fn enabled(&self, level: Level) -> bool {
match level {
Level::Error => tracing::enabled!(tracing::Level::ERROR),
Level::Warn => tracing::enabled!(tracing::Level::WARN),
Level::Info => tracing::enabled!(tracing::Level::INFO),
Level::Debug => tracing::enabled!(tracing::Level::DEBUG),
Level::Trace => tracing::enabled!(tracing::Level::TRACE),
}
}
}
#[must_use]
pub const fn to_tracing_level(level: Level) -> tracing::Level {
match level {
Level::Error => tracing::Level::ERROR,
Level::Warn => tracing::Level::WARN,
Level::Info => tracing::Level::INFO,
Level::Debug => tracing::Level::DEBUG,
Level::Trace => tracing::Level::TRACE,
}
}
#[must_use]
pub const fn from_tracing_level(level: tracing::Level) -> Level {
match level {
tracing::Level::ERROR => Level::Error,
tracing::Level::WARN => Level::Warn,
tracing::Level::INFO => Level::Info,
tracing::Level::DEBUG => Level::Debug,
tracing::Level::TRACE => Level::Trace,
}
}
#[cfg(test)]
#[path = "logger_tests.rs"]
mod tests;