//@ extern: log // `log`'s value to its 61 dependents in libcosmic's tree is 20 // `macro_rules!`, so the macros are lowered directly against the facade's // documented behaviour, as `bitflags!` is. The oracle links the real crate; // rustnim does not get it and has to reproduce it. // // The behaviour worth pinning: with no logger installed every macro is a // no-op and `log_enabled!` stays false even after `set_max_level`, because // the facade consults the logger as well as the level. `Display` for a // level is upper-case where `Debug` is not. use log::{debug, error, info, log, log_enabled, trace, warn, Level, LevelFilter}; fn main() { println!("default max_level {:?}", log::max_level()); println!("enabled {} {}", log_enabled!(Level::Error), log_enabled!(Level::Trace)); // With no logger installed these emit nothing at all. error!("e"); warn!("w"); info!("i {}", 1); debug!("d"); trace!("t"); log!(Level::Info, "explicit {}", 2); log::set_max_level(LevelFilter::Info); println!("after set {:?}", log::max_level()); println!("enabled {} {} {}", log_enabled!(Level::Error), log_enabled!(Level::Info), log_enabled!(Level::Debug)); info!("still nothing, no logger"); println!("levels {} {} {} {} {}", Level::Error as usize, Level::Warn as usize, Level::Info as usize, Level::Debug as usize, Level::Trace as usize); println!("filters {} {}", LevelFilter::Off as usize, LevelFilter::Trace as usize); println!("ord {} {}", Level::Error < Level::Warn, Level::Trace > Level::Info); println!("disp {} {:?}", Level::Warn, Level::Warn); }