Utilities for log by wrapping Box<dyn log::Log>
, such as log filtering, log capturing
filter log by module name ```rust fn main() { std::env::setvar("RUSTLOG", "info"); let logger = envlogger::Builder::fromdefaultenv().build(); log::setmaxlevel(logger.filter()); logwrap::LogWrap::new(Box::new(logger)) .black_module(["hyper", "h2"]) .init() .unwrap();
// your code ...
} ```
capturing logs in each thread, and output them synchronously before thread exiting ```rust fn main() { std::env::setvar("RUSTLOG", "info"); let logger = envlogger::Builder::fromdefaultenv().build(); log::setmaxlevel(logger.filter()); logwrap::LogWrap::new(Box::new(logger)) .enablethreadcapture() .init() .unwrap();
let joins = (0..5)
.map(|t| {
std::thread::spawn(move || {
let _guard = log_wrap::capture_thread_log();
for i in 0..5 {
log::info!("thread#{t} {i} ...");
}
})
})
.collect::<Vec<_>>();
for j in joins {
j.join().unwrap()
}
} ```