log-wrap 0.1.0

Utilities for log by wrapping `Box<dyn log::Log>`, such as log filtering, log capturing
Documentation
  • Coverage
  • 50%
    11 out of 22 items documented1 out of 14 items with examples
  • Size
  • Source code size: 13.54 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 2 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • metaworm

log-wrap

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

Example

filter log by module name

fn main() {
    std::env::set_var("RUST_LOG", "info");
    let logger = env_logger::Builder::from_default_env().build();
    log::set_max_level(logger.filter());
    log_wrap::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

fn main() {
    std::env::set_var("RUST_LOG", "info");
    let logger = env_logger::Builder::from_default_env().build();
    log::set_max_level(logger.filter());
    log_wrap::LogWrap::new(Box::new(logger))
        .enable_thread_capture()
        .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()
    }
}