use super::{Logger, LoggerBackend};
use crate::Formatter3164;
use log::{Level, Log, Metadata, Record};
use std::io::Write;
use std::sync::{Arc, Mutex};
pub struct Logger3164 {
logger: Arc<Mutex<Logger<LoggerBackend, Formatter3164>>>,
}
impl Logger3164 {
pub fn new(logger: Logger<LoggerBackend, Formatter3164>) -> Self {
Self {
logger: Arc::new(Mutex::new(logger)),
}
}
}
#[allow(unused_variables, unused_must_use)]
impl Log for Logger3164 {
fn enabled(&self, metadata: &Metadata) -> bool {
metadata.level() <= log::max_level() && metadata.level() <= log::STATIC_MAX_LEVEL
}
fn log(&self, record: &Record) {
if self.enabled(record.metadata()) {
let message = format!("{}", record.args());
let mut logger = self.logger.lock().unwrap();
match record.level() {
Level::Error => logger.err(message),
Level::Warn => logger.warning(message),
Level::Info => logger.info(message),
Level::Debug => logger.debug(message),
Level::Trace => logger.debug(message),
};
}
}
fn flush(&self) {
let _ = self.logger.lock().unwrap().backend.flush();
}
}