Docs 菜单
Docs 主页
/ / /
Rust 驱动程序
/

跟踪和日志记录

在此页面上

  • Overview
  • 启用跟踪和日志记录
  • 实施追踪
  • 实施日志记录
  • 更多信息

在本指南中,您可以了解如何使用 Rust 驱动程序为应用程序配置跟踪日志记录。 跟踪和日志记录是观察应用程序的两个框架。 日志记录允许您查看驱动程序活动的基于事件的离散日志,而跟踪则提供连续视图。

在 Rust 驱动程序中,跟踪和日志记录功能没有太大区别。 但是,启用跟踪后,驱动程序会以更加结构化的格式发出消息,这可以让应用程序更方便地以编程方式使用事件消息。

跟踪器和记录器按照您可以指定的严重性或详细程度记录消息。 通过在应用程序中启用这些组件之一,您可以接收不同详细程度的应用程序活动信息。

提示

要学习;了解有关日志记录严重性级别的更多信息,请参阅有关消息日志记录的 系统日志标准的 维基百科条目。

驾驶员实现 跟踪 箱,启用驾驶员能够为驾驶员事件发出消息。

重要

追踪箱不稳定

由于 tracing crate 没有 1.0 版本,因此您可以认为该功能不稳定。

要启用跟踪和/或日志记录,您必须将tracing依赖项和tracing-unstable功能标志添加到Cargo.toml文件中的mongodb依赖项:

[dependencies]
tracing = "0.1.37"
[dependencies.mongodb]
version = "3.1.0"
features = ["tracing-unstable"]

下表描述了可以针对其发出事件的组件及其相应的目标:

组件
目标
说明
命令
mongodb::command
事件描述发送到数据库的命令以及这些命令是成功还是失败。
服务器选择
mongodb::server_selection
事件描述了驱动程序在 MongoDB 部署中选择服务器的过程。
连接
mongodb::connection
事件描述了驱动程序连接池的行为及其包含的连接。

要指定日志记录组件和严重性级别,可以在编译和运行应用程序时设置RUST_LOG环境变量。 通过将RUST_LOG的值设置为上表中提供的目标之一并包含严重性级别来指定日志记录组件。

以下代码显示了用于执行在debug级别记录连接事件的程序的命令:

$ RUST_LOG='mongodb::connection=debug' cargo run

以下部分介绍如何使用跟踪日志记录来使用事件。

要启用跟踪,还必须将tracing-subscriber依赖项添加到Cargo.toml文件中。 以下代码显示了包含驱动程序依赖项和tracing-subscriber包的示例依赖项列表:

[dependencies]
tracing = "0.1.37"
tracing-subscriber = "0.3.17"
[dependencies.mongodb]
version = "3.1.0"
features = ["tracing-unstable"]

然后,在您的应用程序中,您必须注册一个实现tracing::Subscriber特征的类型,以通过跟踪使用事件。 以下代码展示了如何注册使用RUST_LOG环境变量规范的跟踪订阅器:

tracing_subscriber::fmt::init();

提示

要了解有关注册订阅者的更多信息,请参阅tracing 文档。

如果您在debug级别运行应用程序并跟踪命令,则每当您执行操作时,驱动程序都会发出消息。 以下代码显示了此跟踪规范的命令:

$ RUST_LOG='mongodb::command=debug' cargo run

指定debug级别跟踪后,当您执行写入操作时,驱动程序会生成跟踪消息:

let my_coll = client.database("db").collection("test_coll");
my_coll.insert_one(doc! { "x" : 1 }).await?;
2023-07-21T17:37:13.587794Z DEBUG mongodb::command: Command started topologyId="..." command="{\"insert\":\"test_coll\", ...}" databaseName="test" commandName="insert" requestId=12 driverConnectionId=1 serverConnectionId=133839 serverHost="..." serverPort=27017
2023-07-21T17:37:13.630401Z DEBUG mongodb::command: Command succeeded topologyId="..." reply="{\"n\":1, ...}" commandName="insert" requestId=12 driverConnectionId=1 serverConnectionId=133839 serverHost="..." serverPort=27017 durationMS=42

要启用日志记录,还必须将loglog-always功能标志添加到Cargo.toml文件中的tracing依赖项。 您还必须为日志记录包添加依赖项,例如env_logger

[dependencies]
tracing = { version = "0.1.37", features = ["log"] }
env_logger = "0.10.0"
[dependencies.mongodb]
version = "3.1.0"
features = ["tracing-unstable"]

提示

要了解有关loglog-always 标志的更多信息,请参阅tracing 文档。

要了解有关第三方日志箱env_logger 的更多信息,请参阅其 文档。

然后,在您的应用程序中,您必须注册一个全局记录器,以通过日志记录来使用事件。 以下代码展示了如何注册使用RUST_LOG环境变量规范的记录器:

env_logger::init();

提示

备用日志记录配置

要查看配置记录器的其他方法的示例,请访问env_logger Github 存储库。

如果您在debug级别运行应用程序并记录连接,则每当您打开、使用和关闭连接时,驱动程序都会发出消息。 以下代码显示了此日志记录规范的命令:

$ RUST_LOG='mongodb::connection=debug' cargo run

通过指定debug级别跟踪,当您打开并使用连接时,驱动程序会生成日志消息:

let my_coll = client.database("db").collection("test_coll");
my_coll.insert_one(doc! { "x" : 1 }).await?;
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool ready topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection checkout started topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection created topologyId="..." serverHost="..." serverPort=27017 driverConnectionId=1
...

要学习;了解有关设置客户端选项的详情,请参阅连接选项指南。

提示

监控

除了日志记录之外,您还可以在应用程序中启用监控。 要了解更多信息,请参阅监控指南。

后退

时间序列集合