diff --git a/src/logger.rs b/src/logger.rs index f5501e1..ca1802c 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -14,44 +14,45 @@ use log4rs::{ use crate::prelude::*; -pub async fn init_logger() -> Res<()> { +pub async fn init_logger(file: bool) -> Res<()> { let stderr = ConsoleAppender::builder() .target(Target::Stderr) .encoder(Box::new(PatternEncoder::new("{h({l})}: {m}\n"))) .build(); - let trigger = SizeTrigger::new(8 * 1024); - let roller = FixedWindowRoller::builder() - .base(0) - .build( - format!("{}/{{}}.log", CONFIG.get().await.log_dir.display()).as_str(), - 3, - ) - .unwrap(); - let policy = CompoundPolicy::new(Box::new(trigger), Box::new(roller)); + let mut builder = Config::builder().appender( + Appender::builder() + .filter(Box::new(ThresholdFilter::new(log::LevelFilter::Info))) + .build("stderr", Box::new(stderr)), + ); + let mut root = Root::builder().appender("stderr"); - let logfile = log4rs::append::rolling_file::RollingFileAppender::builder() - .encoder(Box::new(PatternEncoder::new("{l}: {m}\n"))) - .build( - format!("{}/current.log", CONFIG.get().await.log_dir.display()).as_str(), - Box::new(policy), - ) - .unwrap(); + if file { + eprintln!("logging to file"); + let trigger = SizeTrigger::new(8 * 1024); + let roller = FixedWindowRoller::builder() + .base(0) + .build( + format!("{}/{{}}.log", CONFIG.get().await.log_dir.display()).as_str(), + 3, + ) + .unwrap(); + let policy = CompoundPolicy::new(Box::new(trigger), Box::new(roller)); - let config = Config::builder() - .appender(Appender::builder().build("logfile", Box::new(logfile))) - .appender( - Appender::builder() - .filter(Box::new(ThresholdFilter::new(log::LevelFilter::Info))) - .build("stderr", Box::new(stderr)), - ) - .build( - Root::builder() - .appender("logfile") - .appender("stderr") - .build(LevelFilter::Trace), - ) - .unwrap(); + let logfile = log4rs::append::rolling_file::RollingFileAppender::builder() + .encoder(Box::new(PatternEncoder::new("{l}: {m}\n"))) + .build( + format!("{}/current.log", CONFIG.get().await.log_dir.display()).as_str(), + Box::new(policy), + ) + .unwrap(); + builder = builder.appender(Appender::builder().build("logfile", Box::new(logfile))); + root = root.appender("logfile"); + } else { + eprintln!("not logging to file"); + } + + let config = builder.build(root.build(LevelFilter::Trace)).unwrap(); let _handle = log4rs::init_config(config).map_err(|_| Error::Log4Rs)?; diff --git a/src/main.rs b/src/main.rs index cac4173..9335b98 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,7 +23,8 @@ static DEFAULT_BORDER: tokio::sync::OnceCell = tokio::sync::Once #[tokio::main] async fn main() -> Res<()> { let _watch_handle = config::parse_config().await?; - logger::init_logger().await?; + // only log to file in release builds + logger::init_logger(!cfg!(debug_assertions)).await?; let mut event_connection = swayipc_async::Connection::new().await?; let mut autosplit_connection = swayipc_async::Connection::new().await?;