9个版本

0.1.8 2021年9月12日
0.1.7 2021年2月21日
0.1.6 2020年11月17日
0.1.5 2019年12月25日
0.1.1 2018年7月23日

#344调试

Download history 911/week @ 2024-03-13 628/week @ 2024-03-20 1097/week @ 2024-03-27 598/week @ 2024-04-03 815/week @ 2024-04-10 739/week @ 2024-04-17 764/week @ 2024-04-24 634/week @ 2024-05-01 542/week @ 2024-05-08 880/week @ 2024-05-15 1499/week @ 2024-05-22 612/week @ 2024-05-29 730/week @ 2024-06-05 663/week @ 2024-06-12 1180/week @ 2024-06-19 1142/week @ 2024-06-26

3,871 每月下载量
用于 5 个crate(3个直接使用)

Apache-2.0/MIT

9KB
68

Log-reroute

Actions Status codecov docs

log 允许设置目标日志记录器,但在应用程序的生命周期内只能设置一次。这个库通过提供日志代理来帮助解决这个问题。代理后面的日志记录器可以根据需要切换。


lib.rs:

在运行时重新路由日志消息的crate。

log 日志门面允许在整个程序的生命周期内设置单个目标。如果您想多次更改日志目标,可以使用 Reroute(直接使用或通过 initreroute 函数)。

如果您在不知道主要日志将去哪里之前想将日志记录到 stderr,这可能会很有用。

use fern::Dispatch;
use log::{info, LevelFilter};

fn main() {
    // Enable logging of Debug and more severe messages.
    log::set_max_level(LevelFilter::Debug);
    info!("This log message goes nowhere");
    log_reroute::init().unwrap();
    info!("Still goes nowhere");
    // Log to stderr
    let early_logger = Dispatch::new().chain(std::io::stderr()).into_log().1;
    log_reroute::reroute_boxed(early_logger);
    info!("This one goes to stderr");
    // Load file name from config and log to that file
    let file = tempfile::tempfile().unwrap();
    let logger = Dispatch::new().chain(file).into_log().1;
    log_reroute::reroute_boxed(logger);
    info!("And this one to the file");
    // Stop logging
    log_reroute::reroute(log_reroute::Dummy);
}

依赖项

~320KB