use std::str::FromStr;
use serde::{Deserialize, Serialize};
#[derive(
Debug,
PartialEq,
PartialOrd,
Eq,
Ord,
Copy,
Clone,
Default,
derive_more::Display,
Deserialize,
Serialize,
strum::IntoStaticStr,
)]
pub enum LogLevel {
FATAL = 5,
ERROR = 4,
#[default]
WARN = 3,
INFO = 2,
DEBUG = 1,
TRACE = 0,
}
impl FromStr for LogLevel {
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s.to_uppercase().as_str() {
"FATAL" => Ok(LogLevel::FATAL),
"ERROR" => Ok(LogLevel::ERROR),
"WARN" => Ok(LogLevel::WARN),
"INFO" => Ok(LogLevel::INFO),
"DEBUG" => Ok(LogLevel::DEBUG),
"TRACE" => Ok(LogLevel::TRACE),
_ => Err(format!("Invalid log level: {s}")),
}
}
}