#tracing #json-format #tracing-subscriber #events #fields #timestamp #formatter

tracing-ndjson

用于输出跟踪事件的可定制 ndjson 格式化程序

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 中排名

Download history 12/week @ 2024-03-14 1/week @ 2024-03-21 30/week @ 2024-03-28 22/week @ 2024-04-04 39/week @ 2024-04-11 12/week @ 2024-04-18 12/week @ 2024-04-25 48/week @ 2024-05-02 25/week @ 2024-05-09 30/week @ 2024-05-16 17/week @ 2024-05-23 20/week @ 2024-05-30 35/week @ 2024-06-06 53/week @ 2024-06-13 5/week @ 2024-06-20

每月下载 94

MIT 许可证

26KB
432 行代码(不含注释)

tracing-ndjson

Crates.io Rust docs.rs

一个用于以换行符分隔的 JSON 格式跟踪的简单库。此库旨在与 tracing 一起使用,作为 tracing_subscriber::fmt::json 格式化程序的替代方案。

此 crate 的目标是提供包含来自跨度属性和事件字段的字段、可自定义的字段名称和时间戳格式的平坦 JSON 事件。

功能

  • targetmessageleveltimestamp 配置字段名称。
  • 可配置的时间戳格式
    • RFC3339 (2023-10-08T03:30:52Z)
    • RFC339Nanos (2023-10-08T03:30:52.123456789Z)
    • Unix 时间戳 (1672535452)
    • UnixMills (1672535452123)
  • 在 JSON 对象的根目录中捕获所有跨度属性和事件字段。冲突将导致覆盖现有字段。

限制

  • 当平坦化跨度属性和事件字段时,库将覆盖任何具有相同名称的现有字段,包括内置字段,例如 targetmessageleveltimestampfileline
  • 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