diff options
| author | rtkay123 <dev@kanjala.com> | 2026-03-29 16:15:54 +0200 |
|---|---|---|
| committer | rtkay123 <dev@kanjala.com> | 2026-03-29 16:15:54 +0200 |
| commit | 57c4a5251c30d3dc2b78059fd208d8948d999056 (patch) | |
| tree | 43d86334ad8c08305b9cadda3a524016e0ea4cfc /lib/warden-core/src/config/log_level.rs | |
| parent | c02a5a74d637bab34dc85a0f8a6cfd2a69fd6597 (diff) | |
| download | warden-57c4a5251c30d3dc2b78059fd208d8948d999056.tar.bz2 warden-57c4a5251c30d3dc2b78059fd208d8948d999056.zip | |
refactor: move config to core
Diffstat (limited to 'lib/warden-core/src/config/log_level.rs')
| -rw-r--r-- | lib/warden-core/src/config/log_level.rs | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/warden-core/src/config/log_level.rs b/lib/warden-core/src/config/log_level.rs new file mode 100644 index 0000000..3edfbc3 --- /dev/null +++ b/lib/warden-core/src/config/log_level.rs @@ -0,0 +1,68 @@ +use clap::ValueEnum; +use serde::Deserialize; + +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum, Debug, Default, Deserialize)] +#[serde(rename_all = "lowercase")] +pub enum LogLevel { + /// The "trace" level. + /// + /// Designates very low priority, often extremely verbose, information. + Trace = 0, + /// The "debug" level. + /// + /// Designates lower priority information. + #[default] + Debug = 1, + /// The "info" level. + /// + /// Designates useful information. + Info = 2, + /// The "warn" level. + /// + /// Designates hazardous situations. + Warn = 3, + /// The "error" level. + /// + /// Designates very serious errors. + Error = 4, +} + +impl From<LogLevel> for tracing::Level { + fn from(value: LogLevel) -> Self { + match value { + LogLevel::Trace => tracing::Level::TRACE, + LogLevel::Debug => tracing::Level::DEBUG, + LogLevel::Info => tracing::Level::INFO, + LogLevel::Warn => tracing::Level::WARN, + LogLevel::Error => tracing::Level::ERROR, + } + } +} + +#[cfg(test)] +mod tests { + use super::LogLevel; + + fn check(level: LogLevel, value: &str) { + let level = tracing::Level::from(level); + assert_eq!(level.to_string().to_lowercase(), value); + } + + #[test] + fn loglevel() { + let level = LogLevel::Trace; + check(level, "trace"); + + let level = LogLevel::Debug; + check(level, "debug"); + + let level = LogLevel::Info; + check(level, "info"); + + let level = LogLevel::Warn; + check(level, "warn"); + + let level = LogLevel::Error; + check(level, "error"); + } +} |
