Files
YANPM/apps/api/src/configs/logging.rs

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,
}
}
}