diff --git a/src/main.rs b/src/main.rs index ec504b5e76631e70cc7c16fac8be99a6369c4698..a56017be8f7c972165b0cd3e13e2d5aec39d8d26 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,29 +23,33 @@ static MAVLINK_PROFILE: LazyLock<ReflectionContext> = LazyLock::new(ReflectionCo static APP_NAME: &str = "segs"; fn main() -> Result<(), eframe::Error> { - // Set up logging (USE RUST_LOG=debug to see logs) - let env_filter = EnvFilter::builder().from_env_lossy(); - let registry = tracing_subscriber::registry() - .with(tracing_subscriber::fmt::layer().with_filter(env_filter)); - // Create the logs directory if it doesn't exist and add to the registry - if let Some(base_dirs) = directories::BaseDirs::new() { + let mut _guard = None; + let file_layer = if let Some(base_dirs) = directories::BaseDirs::new() { let proj_dir = base_dirs.data_local_dir().join(APP_NAME); let logs_dir = proj_dir.join("logs"); create_dir_all(&logs_dir).log_expect("Failed to create logs directory"); - let file_appender = tracing_appender::rolling::daily(logs_dir, "segs.log"); - let (non_blocking, _guard) = tracing_appender::non_blocking(file_appender); - let registry = registry.with( + let file_appender = tracing_appender::rolling::daily(&logs_dir, "segs.log"); + let (non_blocking, guard) = tracing_appender::non_blocking(file_appender); + _guard = Some(guard); // Keep guard alive to flush logs + Some( tracing_subscriber::fmt::layer() .json() .with_writer(non_blocking), - ); - // Initialize the logger - registry.init(); + ) } else { - registry.init(); - } + None + }; + + // Set up logging (USE RUST_LOG=debug to see logs) + let env_filter = EnvFilter::builder().from_env_lossy(); + + // Initialize the logger + tracing_subscriber::registry() + .with(tracing_subscriber::fmt::layer().with_filter(env_filter)) + .with(file_layer) + .init(); let native_options = eframe::NativeOptions { // By modifying the viewport, we can change things like the windows size