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}