pub mod console;
pub use console::ConsoleLoggingService;
use crate::compat::{MaybeSend, MaybeSync};
pub trait LoggingService: MaybeSend + MaybeSync {
fn log(&self, _level: LogLevel, _message: &str) {
}
}
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum LogLevel {
Trace,
Debug,
Info,
Warn,
Error,
}
#[cfg(test)]
mod tests {
use super::*;
struct TestLogger;
impl LoggingService for TestLogger {
fn log(&self, level: LogLevel, message: &str) {
assert!(matches!(level, LogLevel::Info));
assert_eq!(message, "hello");
}
}
#[test]
fn logging_service_default_impl_is_overridable() {
let logger = TestLogger;
logger.log(LogLevel::Info, "hello");
}
}