43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
use log::{LevelFilter, SetLoggerError};
|
|
use simple_logger::SimpleLogger;
|
|
|
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
|
pub enum LogLevel {
|
|
None,
|
|
Warn,
|
|
Info,
|
|
Debug
|
|
}
|
|
|
|
impl From<&str> for LogLevel {
|
|
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<LogLevel> 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()
|
|
}
|