4 个版本
0.2.0 | 2023 年 10 月 20 日 |
---|---|
0.1.2 | 2023 年 10 月 9 日 |
0.1.1 | 2023 年 10 月 8 日 |
0.1.0 | 2023 年 10 月 8 日 |
43 在 #tracing-subscriber 中排名
每月下载 94 次
26KB
432 行代码(不含注释)
tracing-ndjson
一个用于以换行符分隔的 JSON 格式跟踪的简单库。此库旨在与 tracing 一起使用,作为 tracing_subscriber::fmt::json
格式化程序的替代方案。
此 crate 的目标是提供包含来自跨度属性和事件字段的字段、可自定义的字段名称和时间戳格式的平坦 JSON 事件。
功能
- 为
target
、message
、level
和timestamp
配置字段名称。 - 可配置的时间戳格式
- RFC3339 (
2023-10-08T03:30:52Z
) - RFC339Nanos (
2023-10-08T03:30:52.123456789Z
) - Unix 时间戳 (
1672535452
) - UnixMills (
1672535452123
)
- RFC3339 (
- 在 JSON 对象的根目录中捕获所有跨度属性和事件字段。冲突将导致覆盖现有字段。
限制
- 当平坦化跨度属性和事件字段时,库将覆盖任何具有相同名称的现有字段,包括内置字段,例如
target
、message
、level
、timestamp
、file
和line
。 - JSON 对象中字段的非确定性排序。(JSON 对象是无序的)
- 目前仅记录到 stdout。 (PRs 欢迎!)
用法
将此添加到您的 Cargo.toml
[dependencies]
tracing = "0.1"
tracing-ndjson = "0.2"
use tracing_subscriber::prelude::*;
fn main() {
let subscriber = tracing_subscriber::registry().with(tracing_ndjson::layer());
tracing::subscriber::set_global_default(subscriber).unwrap();
tracing::info!(life = 42, "Hello, world!");
// {"level":"info","target":"default","life":42,"timestamp":"2023-10-20T21:17:49Z","message":"Hello, world!"}
let span = tracing::info_span!("hello", "request.uri" = "https://example.com");
span.in_scope(|| {
tracing::info!("Hello, world!");
// {"message":"Hello, world!","request.uri":"https://example.com","level":"info","target":"default","timestamp":"2023-10-20T21:17:49Z"}
});
}
示例
请参阅 示例目录 以获取更多示例。
许可证
在 MIT 许可证 下授权
依赖项
~2.6–4MB
~69K SLoC