tofuri_logger/
lib.rs

1use chrono::Local;
2use colored::*;
3use env_logger::Builder;
4use env_logger::Env;
5use log::Level;
6use std::io::Write;
7pub fn init(log_path: bool) {
8    fn colored_level(level: Level) -> ColoredString {
9        match level {
10            Level::Error => level.to_string().red(),
11            Level::Warn => level.to_string().yellow(),
12            Level::Info => level.to_string().green(),
13            Level::Debug => level.to_string().blue(),
14            Level::Trace => level.to_string().magenta(),
15        }
16    }
17    let mut builder = Builder::from_env(Env::default().default_filter_or("info"));
18    if log_path {
19        builder.format(|buf, record| {
20            writeln!(
21                buf,
22                "[{} {} {}{}{}] {}",
23                Local::now().format("%H:%M:%S"),
24                colored_level(record.level()),
25                record.file_static().unwrap().black(),
26                ":".black(),
27                record.line().unwrap().to_string().black(),
28                record.args()
29            )
30        });
31    } else {
32        builder.format(|buf, record| writeln!(buf, "[{} {}] {}", Local::now().format("%H:%M:%S"), colored_level(record.level()), record.args()));
33    }
34    builder.init();
35}