use log::{LevelFilter, SetLoggerError}; use serde::{Deserialize, Serialize}; use simple_logger::SimpleLogger; #[derive(Serialize, Deserialize, Clone, Debug)] pub enum LogLevel { None, Warn, Info, Debug, } impl From<&str> for LogLevel { #[allow(clippy::wildcard_in_or_patterns)] fn from(s: &str) -> Self { let s = s.to_lowercase(); match s.as_str() { "warn" | "w" => LogLevel::Warn, "info" | "i" => LogLevel::Info, "debug" | "d" => LogLevel::Debug, "none" | _ => LogLevel::None, } } } impl From for LevelFilter { fn from(l: LogLevel) -> Self { match l { LogLevel::None => LevelFilter::Off, LogLevel::Warn => LevelFilter::Warn, LogLevel::Info => LevelFilter::Info, LogLevel::Debug => LevelFilter::Debug, } } } pub fn init_logging(log_level: LogLevel) -> Result<(), SetLoggerError> { SimpleLogger::new() .with_level(log_level.into()) .with_module_level("hyper", LevelFilter::Info) .with_module_level("sled", LevelFilter::Info) .init() }