1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
use env_logger::Builder;
use log::Level;
use std::io::Write;
pub fn init_logger(level_filter: Option<log::LevelFilter>) {
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();
}
|