use env_logger::Builder; use log::Level; use std::io::Write; pub fn init_logger(level_filter: Option) { let mut builder = match level_filter { Some(f) => { let mut b = Builder::new(); b.filter_level(f); b } None => return, }; builder .format(|buf, record| { let level = record.level(); let args = record.args(); let (prefix, color_code) = match level { Level::Error => ("error: ", "\x1b[1;31m"), Level::Warn => ("warn: ", "\x1b[1;33m"), Level::Info => ("", "\x1b[37m"), Level::Debug => ("debug: ", "\x1b[90m"), Level::Trace => ("trace: ", "\x1b[36m"), }; let colored_prefix = format!("{}{}\x1b[0m", color_code, prefix); writeln!(buf, "{}{}", colored_prefix, args) }) .init(); }