dlog_rs 1.1.1

Rust adapter for the dlog logging platform
Documentation
use log::{Level, Metadata, Record};

use dlog_core::models::Priority;

pub struct DlogLogger {
    core: dlog_core::Logger,
    level: Level,
}

impl DlogLogger {
    pub fn new(core: dlog_core::Logger, level: Level) -> Self {
        Self { core, level }
    }
}

impl log::Log for DlogLogger {
    fn enabled(&self, metadata: &Metadata) -> bool {
        metadata.level() >= self.level
    }

    fn log(&self, record: &Record) {
        if let Err(err) = self.core.log(convert_level(record.level()), record.args().to_string()) {
            eprintln!("[dlog] Error during log: {}", err)
        }
    }

    fn flush(&self) {
        if let Err(err) = self.core.flush() {
            eprintln!("[dlog] Error during flush: {}", err)
        }
    }
}

fn convert_level(level: Level) -> Priority {
    match level {
        Level::Error => Priority::Error,
        Level::Warn => Priority::Warning,
        Level::Info => Priority::Informational,
        Level::Debug => Priority::Debug,
        Level::Trace => Priority::Trace,
    }
}