5 个版本

0.1.3 2022年2月4日
0.1.2 2020年9月11日
0.1.1 2020年2月28日
0.1.0 2019年11月19日
0.0.0 2019年6月27日

#480调试 中排名

Download history 518788/week @ 2024-04-22 467475/week @ 2024-04-29 480704/week @ 2024-05-06 522070/week @ 2024-05-13 531588/week @ 2024-05-20 503008/week @ 2024-05-27 540574/week @ 2024-06-03 556569/week @ 2024-06-10 527920/week @ 2024-06-17 552091/week @ 2024-06-24 494745/week @ 2024-07-01 542198/week @ 2024-07-08 541398/week @ 2024-07-15 587212/week @ 2024-07-22 573185/week @ 2024-07-29 560057/week @ 2024-08-05

2,282,094 每月下载量
1,101 个代码库中使用了(直接使用17个)

MIT 许可证

195KB
3K SLoC

Tracing — Structured, application-level diagnostics

tracing-serde

一个用于使用 serde 序列化 tracing 类型的适配器。

Documentation Documentation (master)

概述

tracing 是一个用于对Rust程序进行仪表化的框架,以收集范围、结构化和异步感知的诊断信息。tracing-serde 使您能够使用 serde 序列化 tracing 类型。

传统的日志记录基于可读文本消息。 tracing 为我们提供了可读的结构化诊断信息。这使我们能够以编程方式与诊断数据交互。通过 tracing-serde,您可以实现一个 Subscriber 来序列化您的 tracing 类型,并利用现有的 serde 序列化器生态系统与分布式跟踪系统进行通信。

序列化诊断信息使我们能够对日志值做更多操作。例如,当在开发中使用JSON处理日志数据时,可以提供格式化的输出,您还可以在生产中发出JSON和跟踪数据以监控您的服务。

tracing 代码库提供了必要的API,用于对库和应用程序进行仪表化,以发出跟踪数据。

编译器支持:需要 rustc 1.42+

使用方法

首先,将以下内容添加到您的 Cargo.toml

[dependencies]
tracing = "0.1"
tracing-serde = "0.1"

接下来,将以下内容添加到您的crate中

use tracing_serde::AsSerde;

请阅读有关如何创建跟踪数据的更多信息,请参阅 tracing 文档

此crate通过 AsSerde trait提供了 as_serde 函数,它允许序列化 AttributesEventIdMetadataRecord tracing 值。

完整的示例请参见 examples 文件夹。

实现一个 Subscriber 以按您希望的格式化方式序列化 tracing 类型。

pub struct JsonSubscriber {
    next_id: AtomicUsize, // you need to assign span IDs, so you need a counter
}

impl Subscriber for JsonSubscriber {

    fn new_span(&self, attrs: &Attributes) -> Id {
        let id = self.next_id.fetch_add(1, Ordering::Relaxed);
        let id = Id::from_u64(id as u64);
        let json = json!({
        "new_span": {
            "attributes": attrs.as_serde(),
            "id": id.as_serde(),
        }});
        println!("{}", json);
        id
    }
    // ...
}

实现您的 Subscriber 后,您可以使用您的 tracing 订阅者(如上例中的 JsonSubscriber)来记录序列化的跟踪数据。

支持的 Rust 版本

Tracing 是针对最新的稳定版本构建的。最低支持的版本是 1.42。当前 Tracing 版本不一定能在低于最低支持版本的 Rust 版本上构建。

Tracing 遵循与 Tokio 项目中其他部分相同的编译器支持策略。当前稳定 Rust 编译器和它之前的三个次要版本将始终得到支持。例如,如果当前稳定编译器版本是 1.45,最低支持版本将不会超过 1.42,即之前的三个次要版本。只要这样做符合此政策,提高最低支持的编译器版本不被视为 semver 破坏性更改。

许可证

此项目遵循 MIT 许可证

贡献

除非您明确声明,否则您向 Tokio 提交的任何有意贡献的内容都应按 MIT 许可证许可,不附加任何额外的条款或条件。

依赖项

~110–375KB