log-wrap

Utilities for log by wrapping Box<dyn log::Log>, such as log filtering, log capturing

Example

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()
}

} ```