#module #filter #logging #slog #log

slg-vmodule

基于模块级别的日志级别过滤器 Drain,用于 slog-rs

1 个不稳定版本

0.1.0 2019 年 8 月 21 日

#29#slog

MIT 许可证

12KB
188

Build Status codecov

slg-vmodule - 基于 slog-rs 的模块级别日志级别过滤器 Drain

功能

过滤器 Drain 提供了对模块(日志器名称)级别的日志的精细控制。例如:使用标志 foo=debug,bar=error 和默认级别 INFO,只有来自 foo 的调试日志会被排空,而不是来自 bar。并且来自 bar 的日志至少需要 ERROR 级别才能通过。没有模块名称的其他日志将继续采用默认的 INFO 设置。

用法

    // ... 

    let vmodule: HashMap<String, Level> = [
        ("foo".to_owned(), Level::Debug),
        ("bar".to_owned(), Level::Error),
    ]
    .iter()
    .cloned()
    .collect();
    // Or parse from flag string
    //let vmodule: HashMap<String, Level> = ModLevelFilterConfig("foo=debug,bar=error".to_string()).into();

    // Module name key("module" here) is configurable. Use whatever you like.
    let filter =
        ModLevelFilter::new(drain, "module".to_owned(), Level::Warning, vmodule).fuse();

    // Logger for different modules
    let root_log = Logger::root(filter.fuse(), o!());
    let foo_log = root_log.new(o!("module" => "foo"));
    let bar_log = root_log.new(o!("module" => "bar"));

    info!(root_log, "Not Pass");
    info!(foo_log, "Pass");
    info!(bar_log, "Not Pass");

    // ...

依赖

~160KB