#tracing-subscriber #logging-tracing #logging #tracing #subscriber #log-messages #env-var

serif

一个注重可读性的有见地的tracing-subscriber配置

6个版本

0.1.5 2024年6月21日
0.1.4 2023年3月21日
0.1.2 2023年1月19日
0.1.1 2022年11月22日

#342调试

Download history 140/week @ 2024-06-18 5/week @ 2024-06-25 27/week @ 2024-07-02

每月286次下载

Apache-2.0

98KB
433

Serif

Serif是一个有见地的Rust tracing-subscriber配置,专注于可读性。

Crates.io Docs.rs

Screenshot of formatting

关于

Serif是我对在命令行应用程序中使用tracing-subscriber的最佳配置方式的看法,重点是主要日志消息的可读性。跟踪跨度作用域、事件目标和附加元数据都以淡化颜色呈现,使主要消息迅速突出。至少在我偏爱的Solarized Dark配色方案中是这样。

Serif使用EnvFilter通过环境变量RUST_LOG进行过滤,如果没有其他配置,则默认级别为INFO

Serif使用统一配置设置了FmtSubscriberEnvFilter。基本上,这一切都是为了让我从env_logger迁移过来更容易。

用法

你只需要在Cargo.toml中添加一个依赖项,并设置一个全局默认跟踪跟踪器的单个构建链。为了方便,serif重新导出tracing并在serif::macros中提供常见的日志宏。

use serif::macros::*;
use serif::tracing::Level;

fn main() {
    serif::Config::new()            // create config builder
        .with_default(Level::DEBUG) // the default otherwise is INFO
        .init();                    // finalize and register with tracing
    info!("Hello World!");
    do_stuff();
    debug!("Finished doing stuff");
}

对于更高级的使用场景,Serif提供了EventFormatter,它实现了FormatEvent,以及FieldFormatter,它实现了FormatFields。这些对象可以与任何其他所需选项一起传递给SubscriberBuilder

ANSI终端颜色

默认情况下,当输出文件描述符(stdout或stderr)是TTY,并且环境变量NO_COLOR未设置或为空时,Serif会启用ANSI配色。目前,具体的颜色风格不可自定义。

给高级用户配置SubscriberBuilder的提示:`EventFormatter`和`FieldFormatter`不会直接跟踪ANSI颜色是否启用,而是从传递给各种方法的`Writer`中获取。调用`SubscriberBuilder::with_ansi`来配置自定义使用的配色。

许可证

Serif采用Apache 2.0许可证发布。

此外,还受到了tracing-subscriber实现的重大启发,该库采用MIT许可证发布。

依赖项

约5-14MB
约153K SLoC