mod test_utils; use flexi_logger::{detailed_format, FileSpec, Logger}; use log::*; #[test] fn test_mods() { let handle = Logger::try_with_env_or_str( "info, test_mods::mymod1=debug, test_mods::mymod2=error, test_mods::mymod1::mysubmod = off", ) .unwrap() .format(detailed_format) .log_to_file( FileSpec::default() .suppress_timestamp() .directory(self::test_utils::dir()), ) .start() .unwrap_or_else(|e| panic!("Logger initialization failed with {e}")); error!("This is an error message"); warn!("This is a warning"); info!("This is an info message"); debug!("This is a debug message - you must not see it!"); trace!("This is a trace message - you must not see it!"); mymod1::test_traces(); mymod2::test_traces(); handle.validate_logs(&[ ("ERROR", "test_mods", "error"), ("WARN", "test_mods", "warning"), ("INFO", "test_mods", "info"), ("ERROR", "test_mods::mymod1", "error"), ("WARN", "test_mods::mymod1", "warning"), ("INFO", "test_mods::mymod1", "info"), ("DEBUG", "test_mods::mymod1", "debug"), ("ERROR", "test_mods::mymod2", "error"), ]); } mod mymod1 { use log::*; pub fn test_traces() { error!("This is an error message"); warn!("This is a warning"); info!("This is an info message"); debug!("This is a debug message"); trace!("This is a trace message - you must not see it!"); self::mysubmod::test_traces(); } mod mysubmod { use log::*; pub fn test_traces() { error!("This is an error message - you must not see it!"); warn!("This is a warning - you must not see it!"); info!("This is an info message - you must not see it!"); debug!("This is a debug message - you must not see it!"); trace!("This is a trace message - you must not see it!"); } } } mod mymod2 { use log::*; pub fn test_traces() { error!("This is an error message"); warn!("This is a warning - you must not see it!"); info!("This is an info message - you must not see it!"); debug!("This is a debug message - you must not see it!"); trace!("This is a trace message - you must not see it!"); } }