use log::{Level, Metadata, Record};
pub use yansi::Paint;
pub static LOGGER: Logger = Logger;
pub struct Logger;
impl log::Log for Logger {
fn enabled(&self, metadata: &Metadata) -> bool {
let enable = if !cfg!(debug_assertions) {
metadata.level() == Level::Warn
|| metadata.level() == Level::Error
|| metadata.level() == Level::Debug
} else {
true
};
metadata.level() <= Level::Trace
&& enable
}
fn log(&self, record: &Record) {
if self.enabled(record.metadata()) {
eprintln!(
"{:<5}:{} - {}",
match record.level() {
Level::Error => Paint::red("ERROR"),
Level::Warn => Paint::yellow("WARN"),
Level::Info => Paint::blue("INFO"),
Level::Debug => Paint::green("DEBUG"),
Level::Trace => Paint::magenta("TRACE"),
},
Paint::new(record.target()).dimmed(),
record.args()
);
}
}
fn flush(&self) {}
}