use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct LoggingConfig {
#[serde(default = "LoggingConfig::default_enabled")]
pub enabled: bool,
#[serde(default = "LoggingConfig::default_level")]
pub level: String,
#[serde(default = "LoggingConfig::default_log_to_console")]
pub log_to_console: bool,
#[serde(default = "LoggingConfig::default_append_to_file")]
pub append_to_file: bool,
#[serde(default = "LoggingConfig::default_rotate_logs")]
pub rotate_logs: bool,
#[serde(default = "LoggingConfig::default_rotation_size_mb")]
pub rotation_size_mb: u64,
#[serde(default = "LoggingConfig::default_keep_log_files")]
pub keep_log_files: u32,
#[serde(default)]
pub custom_log_path: Option<String>,
}
impl LoggingConfig {
fn default_enabled() -> bool {
true
}
fn default_level() -> String {
"info".to_string()
}
fn default_log_to_console() -> bool {
false
}
fn default_append_to_file() -> bool {
true
}
fn default_rotate_logs() -> bool {
true
}
fn default_rotation_size_mb() -> u64 {
10
}
fn default_keep_log_files() -> u32 {
5
}
}
impl Default for LoggingConfig {
fn default() -> Self {
Self {
enabled: Self::default_enabled(),
level: Self::default_level(),
log_to_console: Self::default_log_to_console(),
append_to_file: Self::default_append_to_file(),
rotate_logs: Self::default_rotate_logs(),
rotation_size_mb: Self::default_rotation_size_mb(),
keep_log_files: Self::default_keep_log_files(),
custom_log_path: None,
}
}
}