From 9cc1a52e5aea1810997587c02db71f048b6116a7 Mon Sep 17 00:00:00 2001 From: Lucien Cartier-Tilet Date: Sat, 11 Jul 2020 17:51:38 +0200 Subject: [PATCH] Better debug messages and logging handling --- src/lib.rs | 51 +++++++++++++++++++++++++++++---------------- src/settings/mod.rs | 16 ++++++++++---- 2 files changed, 45 insertions(+), 22 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 5ce8939..f79718d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -40,24 +40,39 @@ pub mod utils; /// lang_evolve_core::init(); /// ``` pub fn init() -> std::result::Result<(), log::SetLoggerError> { - match CombinedLogger::init(vec![ - TermLogger::new( - LevelFilter::Warn, - Config::default(), - TerminalMode::Mixed, - ) - .unwrap(), - WriteLogger::new( - LevelFilter::Debug, - Config::default(), - File::create("core.log").unwrap(), - ), - WriteLogger::new( - LevelFilter::Info, - Config::default(), - File::create("core.log").unwrap(), - ), - ]) { + // #[cfg(debug_assertions)] + match CombinedLogger::init(if cfg!(debug_assertions) { + vec![ + WriteLogger::new( + LevelFilter::Warn, + Config::default(), + File::create("core.log").unwrap(), + ), + WriteLogger::new( + LevelFilter::Debug, + Config::default(), + File::create("core.log").unwrap(), + ), + WriteLogger::new( + LevelFilter::Info, + Config::default(), + File::create("core.log").unwrap(), + ), + ] + } else { + vec![ + WriteLogger::new( + LevelFilter::Warn, + Config::default(), + File::create("core.log").unwrap(), + ), + WriteLogger::new( + LevelFilter::Info, + Config::default(), + File::create("core.log").unwrap(), + ), + ] + }) { Err(why) => { warn!("Could not initialize logger: {}", why.to_string()); Err(why) diff --git a/src/settings/mod.rs b/src/settings/mod.rs index cf07719..edbf1fe 100644 --- a/src/settings/mod.rs +++ b/src/settings/mod.rs @@ -347,16 +347,24 @@ impl Settings { debug!("==============================================="); for rule in rules { debug!( - "from: {}\tto: {}", + "from: \"{}\"\tto: \"{}\"", rule.get_from().to_string(), rule.get_to() ); - debug!("old: {}", s); - s = rule + let old = s.clone(); + let new = rule .get_from() .replace_all(&s, rule.get_to().as_str()) .to_string(); - debug!("new: {}", s); + if cfg!(debug_assertions) { + let diffs = diff_words(&old, &new); + if diffs.diff().len() > 1 { + debug!("diff:\n{}", diff_words(&old, &new)); + } else { + debug!("diff: No changes"); + } + } + s = new; } Ok(s) }