roblib_client/
logger.rs

1use env_logger::fmt::Color;
2use log::Level;
3use std::{env, io::Write};
4
5/// custom `log` format
6pub fn init_log(default_level: Option<&str>) {
7    if let Some(default_level) = default_level {
8        if env::var("RUST_LOG").is_err() {
9            env::set_var("RUST_LOG", default_level);
10        }
11    }
12
13    env_logger::Builder::from_default_env()
14        .format(|buf, record| {
15            let mut style = buf.style();
16            style.set_bold(true);
17            let message = style.value(record.args());
18
19            let timestamp = buf.timestamp();
20
21            let mut style = buf.style();
22            let level = match record.level() {
23                Level::Trace => style.set_color(Color::Magenta).value("TRACE"),
24                Level::Debug => style.set_color(Color::Blue).value("DEBUG"),
25                Level::Info => style.set_color(Color::Green).value("INFO"),
26                Level::Warn => style.set_color(Color::Yellow).value("WARN"),
27                Level::Error => style.set_color(Color::Red).value("ERROR"),
28            };
29
30            writeln!(buf, "[{}]({}): {}", level, timestamp, message)
31        })
32        .init();
33}