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 在 调试 中
每月286次下载
98KB
433 行
Serif
Serif是一个有见地的Rust tracing-subscriber配置,专注于可读性。
关于
Serif是我对在命令行应用程序中使用tracing-subscriber
的最佳配置方式的看法,重点是主要日志消息的可读性。跟踪跨度作用域、事件目标和附加元数据都以淡化颜色呈现,使主要消息迅速突出。至少在我偏爱的Solarized Dark配色方案中是这样。
Serif使用EnvFilter
通过环境变量RUST_LOG
进行过滤,如果没有其他配置,则默认级别为INFO
。
Serif使用统一配置设置了FmtSubscriber
和EnvFilter
。基本上,这一切都是为了让我从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