1use log::{Level, LevelFilter, SetLoggerError};
2use simplelog::{Color, ColorChoice, ConfigBuilder, TerminalMode, ThreadLogMode};
3
4use crate::types::LOG_LEVEL_ENV;
5
6#[inline(always)]
7pub fn init_logger() -> Result<(), SetLoggerError> {
8 simplelog::TermLogger::init(
9 {
10 let var = std::env::var(LOG_LEVEL_ENV).unwrap_or("INFO".to_string());
11 match var.to_uppercase().as_str() {
12 "DEBUG" => LevelFilter::Debug,
13 "INFO" => LevelFilter::Info,
14 "WARN" => LevelFilter::Warn,
15 "ERROR" => LevelFilter::Error,
16 "TRACE" => LevelFilter::Trace,
17 _ => LevelFilter::Trace,
18 }
19 },
20 ConfigBuilder::new()
21 .set_time_level(LevelFilter::Debug)
22 .set_location_level(LevelFilter::Off)
23 .set_thread_mode(ThreadLogMode::Names)
24 .set_target_level(LevelFilter::Off)
25 .set_level_color(Level::Info, Some(Color::Cyan))
26 .set_level_color(Level::Warn, Some(Color::Yellow))
27 .set_level_color(Level::Error, Some(Color::Red))
28 .set_level_color(Level::Debug, Some(Color::Green))
29 .set_level_color(Level::Trace, Some(Color::Magenta))
30 .build(),
31 TerminalMode::Mixed,
32 ColorChoice::Auto,
33 )
34}