use serde::{Deserialize, Serialize};
use crate::defaults::default_log_file;
fn default_log_level() -> String {
"info".to_owned()
}
fn default_log_max_files() -> usize {
7
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Deserialize, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum LogRotation {
#[default]
Daily,
Hourly,
Never,
}
#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
#[serde(default)]
pub struct LoggingConfig {
#[serde(default = "default_log_file")]
pub file: String,
#[serde(default = "default_log_level")]
pub level: String,
pub rotation: LogRotation,
#[serde(default = "default_log_max_files")]
pub max_files: usize,
}
impl Default for LoggingConfig {
fn default() -> Self {
Self {
file: default_log_file(),
level: default_log_level(),
rotation: LogRotation::default(),
max_files: default_log_max_files(),
}
}
}