crate::ix!();
impl Logger {
pub fn enabled(&self) -> bool {
let inner = self.cs().lock();
*inner.buffering()
|| *self.print_to_console()
|| *self.print_to_file()
|| !inner.print_callbacks().is_empty()
}
}
#[cfg(test)]
mod logger_enabled_tests {
use super::*;
#[traced_test]
#[serial]
fn test_logger_enabled() {
info!("Testing Logger::enabled() in various scenarios.");
let mut logger = Logger::default();
assert!(logger.enabled(), "Default logger => buffering=true => enabled()=true.");
{
let mut inner = logger.cs().lock();
inner.set_buffering(false);
}
logger.set_print_to_console(false);
logger.set_print_to_file(false);
{
let inner = logger.cs().lock();
assert!(
inner.print_callbacks().is_empty(),
"Default logger has no callbacks"
);
}
assert!(
!logger.enabled(),
"No buffering, no console, no file, no callbacks => enabled()=false"
);
logger.set_print_to_console(true);
assert!(
logger.enabled(),
"print_to_console=true => enabled()=true"
);
logger.set_print_to_console(false);
logger.set_print_to_file(true);
assert!(
logger.enabled(),
"print_to_file=true => enabled()=true"
);
logger.set_print_to_file(false);
{
let mut inner = logger.cs().lock();
inner.print_callbacks_mut().push_back(Box::new(|msg: &String| {
debug!("A dummy callback: {}", msg);
}));
}
assert!(
logger.enabled(),
"No buffering, no console, no file, but callback => enabled()=true"
);
trace!("test_logger_enabled passed.");
}
}