#![forbid(missing_docs)]
use colored::Colorize;
use log::*;
pub fn init(min_level: Level, prog_name: &str) {
set_max_level(min_level.to_level_filter());
let logger = Logger {
min_level,
prog_name: String::from(prog_name),
};
if set_boxed_logger(Box::new(logger)).is_err() {
debug!("Logger initialized twice");
}
}
pub struct Logger {
pub min_level: Level,
pub prog_name: String,
}
impl Log for Logger {
fn enabled(&self, metadata: &Metadata) -> bool {
metadata.level() <= self.min_level
}
fn log(&self, record: &Record) {
if !self.enabled(record.metadata()) {
return;
}
println!(
"{}: {}: {}",
self.prog_name,
match record.level() {
Level::Error => {
"error".red().bold()
}
Level::Warn => {
"warning".bright_purple().bold()
}
Level::Info => {
"info".bright_black().bold()
}
Level::Debug => {
"debug".yellow().bold() }
Level::Trace => {
"trace".white().bold() }
},
record.args().as_str().unwrap().bold()
);
}
fn flush(&self) {}
}