1 个不稳定版本
0.1.0 | 2023 年 1 月 8 日 |
---|
#16 in #capturing
9KB
163 代码行,不包括注释
log-wrap
通过包装 Box<dyn log::Log>
实现日志的实用工具,例如日志过滤、日志捕获
示例
按模块名称过滤日志
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 ...
}
捕获每个线程中的日志,并在线程退出前同步输出
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()
}
}
依赖项
~87KB