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 34 35 36 37
extern crate simplelog; use simplelog::*; arg_enum! { #[derive(Debug)] pub enum LogLevel { Info, Warn, Debug } } impl Default for LogLevel { fn default() -> Self { LogLevel::Warn } } pub fn init(log_level: &LogLevel) { let level_filter = match log_level { LogLevel::Info => LevelFilter::Info, LogLevel::Warn => LevelFilter::Warn, LogLevel::Debug => LevelFilter::Debug, }; let mut logger_array = vec![]; match TermLogger::new(level_filter, Config::default(), TerminalMode::Mixed) { Some(logger) => logger_array.push(logger as Box<dyn SharedLogger>), None => logger_array.push(SimpleLogger::new(level_filter, Config::default())), } CombinedLogger::init(logger_array).expect("No logger should be already set"); debug!("Initialized logging") }