diff --git a/shanty-config/src/lib.rs b/shanty-config/src/lib.rs index fff61ee..f42d98c 100644 --- a/shanty-config/src/lib.rs +++ b/shanty-config/src/lib.rs @@ -44,6 +44,10 @@ pub struct AppConfig { #[serde(default)] pub musicbrainz: MusicBrainzConfig, + + /// Log level: "error", "warn", "info", "debug", "trace". Default: "info". + #[serde(default = "default_log_level")] + pub log_level: String, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -219,6 +223,7 @@ impl Default for AppConfig { scheduling: SchedulingConfig::default(), subsonic: SubsonicConfig::default(), musicbrainz: MusicBrainzConfig::default(), + log_level: default_log_level(), } } } @@ -279,6 +284,10 @@ impl Default for MetadataConfig { } } +fn default_log_level() -> String { + "info".to_string() +} + fn default_library_path() -> PathBuf { dirs::audio_dir().unwrap_or_else(|| PathBuf::from("~/Music")) } diff --git a/shanty-web b/shanty-web index 3dba620..44c96d1 160000 --- a/shanty-web +++ b/shanty-web @@ -1 +1 @@ -Subproject commit 3dba620c9b76f2881f3d90c7dd0cdee0626bc1da +Subproject commit 44c96d125ae9ff5a919010ec807ec6ae584aeede diff --git a/src/main.rs b/src/main.rs index 0125d7f..06f33f2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -56,18 +56,30 @@ async fn main() -> anyhow::Result<()> { let cli = Cli::parse(); + // Load config early so we can use log_level from it + let mut config = AppConfig::load(cli.config.as_deref()); + + // CLI -v flags override config log_level let filter = match cli.verbose { - 0 => "info,shanty=info,shanty_web=info", - 1 => "info,shanty=debug,shanty_web=debug", - _ => "debug,shanty=trace,shanty_web=trace", + 0 => { + // Use config log_level + let level = config.log_level.to_lowercase(); + match level.as_str() { + "error" => "error".to_string(), + "warn" => "warn".to_string(), + "debug" => "debug,shanty=debug,shanty_web=debug".to_string(), + "trace" => "trace,shanty=trace,shanty_web=trace".to_string(), + _ => "info,shanty=info,shanty_web=info".to_string(), + } + } + 1 => "info,shanty=debug,shanty_web=debug".to_string(), + _ => "debug,shanty=trace,shanty_web=trace".to_string(), }; tracing_subscriber::fmt() .with_env_filter( - EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(filter)), + EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(&filter)), ) .init(); - - let mut config = AppConfig::load(cli.config.as_deref()); if let Some(port) = cli.port { config.web.port = port; }