61 lines
1.7 KiB
Rust
61 lines
1.7 KiB
Rust
use config::{Config, ConfigError};
|
|
use tracing::{Level, warn};
|
|
|
|
use super::{
|
|
FromConfig,
|
|
key::{LOGGING_LEVEL_KEY, LOGGING_UTC_KEY},
|
|
};
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct LoggingSettings {
|
|
pub level: Level,
|
|
pub utc: bool,
|
|
}
|
|
|
|
impl FromConfig for LoggingSettings {
|
|
fn from_config(_config: &Config) -> Result<Self, String> {
|
|
const DEFAULT_LOGGING_LEVEL: Level = Level::INFO;
|
|
Ok(LoggingSettings {
|
|
level: _config
|
|
.get_string(LOGGING_LEVEL_KEY)
|
|
.unwrap_or_else(|err| {
|
|
warn!(
|
|
"Failed to read {} from configuration, defaulting to {}. Error: {}",
|
|
LOGGING_LEVEL_KEY, DEFAULT_LOGGING_LEVEL, err
|
|
);
|
|
DEFAULT_LOGGING_LEVEL.to_string()
|
|
})
|
|
.parse()
|
|
.unwrap_or_else(|err| {
|
|
warn!(
|
|
"Invalid logging level in configuration, defaulting to {}. Error: {}",
|
|
DEFAULT_LOGGING_LEVEL, err
|
|
);
|
|
DEFAULT_LOGGING_LEVEL
|
|
}),
|
|
utc: _config
|
|
.get_bool(LOGGING_UTC_KEY)
|
|
.unwrap_or_else(|err: ConfigError| {
|
|
const DEFAULT_UTC: bool = false;
|
|
warn!(
|
|
"Invalid UTC setting in configuration, defaulting to {}. Error: {}",
|
|
DEFAULT_UTC, err
|
|
);
|
|
DEFAULT_UTC
|
|
}),
|
|
})
|
|
}
|
|
|
|
fn validate(&self) -> Result<(), String> {
|
|
Ok(())
|
|
}
|
|
|
|
#[cfg(test)]
|
|
fn mock() -> Self {
|
|
LoggingSettings {
|
|
level: Level::INFO,
|
|
utc: false,
|
|
}
|
|
}
|
|
}
|