davis 0.1.1

An CLI client for MPD.
use log::{LevelFilter, Metadata, Record};
use std::io::Write;

pub struct Logger(pub bool);

impl log::Log for Logger {
    fn enabled(&self, _metadata: &Metadata) -> bool {
        self.0
    }

    fn log(&self, record: &Record) {
        eprintln!("{}", record.args());
    }

    fn flush(&self) {
        if let Err(e) = std::io::stderr().flush() {
            log::trace!("Failed to flush stderr: {}", e);
        }
    }
}

impl Logger {
    pub fn init(self) {
        log::set_max_level(if self.0 {
            LevelFilter::Trace
        } else {
            LevelFilter::Off
        });
        let _ = log::set_logger(Box::leak(Box::new(self)));
    }
}