选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

启用 AWS SDK for Rust 代码日志记录

聚焦模式
启用 AWS SDK for Rust 代码日志记录 - AWS SDK for Rust

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS SDK for Rust 使用跟踪框架进行日志记录。

  1. 在项目目录的命令提示符下,将跟踪订阅者箱子添加为依赖项:

    $ cargo add tracing-subscriber --features tracing-subscriber/env-filter

    这会将箱子添加到Cargo.toml文件的[dependencies]部分。

  2. 初始化订阅者。通常,这是在调用任何 SDK for Rust 操作之前在main函数的早期完成的:

    use aws_config::BehaviorVersion; type BoxError = Box<dyn Error + Send + Sync>; #[tokio::main] async fn main() -> Result<(), BoxError> { tracing_subscriber::fmt::init(); // Initialize the subscriber. let config = aws_config::defaults(BehaviorVersion::latest()) .load() .await; let s3 = aws_sdk_s3::Client::new(&config); let _resp = s3.list_buckets() .send() .await?; Ok(()) }
  3. 使用RUST_LOG环境变量开启日志记录。要启用日志信息的显示,请在命令提示符下将RUST_LOG环境变量设置为要登录的级别。以下示例将日志设置为debug级别:

    Linux/macOS
    $ RUST_LOG=debug
    Windows

    如果您使用的是 VSCode,则终端窗口通常默认为 PowerShell。验证您使用的提示类型。

    C:\> set RUST_LOG=debug
    PowerShell
    PS C:\> $ENV:RUST_LOG="debug"
    $ RUST_LOG=debug
  4. 运行该程序:

    $ cargo run

    您应该在控制台或终端窗口中看到其他输出。

有关更多信息,请参阅tracing-subscriber文档中使用环境变量筛选事件

解释日志输出

按照上一节中的步骤开启日志记录后,默认情况下,其他日志信息将打印为标准输出。

如果您使用的是默认的日志输出格式(跟踪模块称为 “full”),则您在日志输出中看到的信息将与以下内容类似:

2024-06-25T16:10:12.367482Z DEBUG invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt:lazy_load_identity: aws_smithy_runtime::client::identity::cache::lazy: identity cache miss occurred; added new identity (took 480.892ms) new_expiration=2024-06-25T23:07:59Z valid_for=25066.632521s partition=IdentityCachePartition(7) 2024-06-25T16:10:12.367602Z DEBUG invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::identity::cache::lazy: loaded identity 2024-06-25T16:10:12.367643Z TRACE invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::orchestrator::auth: resolved identity identity=Identity { data: Credentials {... }, expiration: Some(SystemTime { tv_sec: 1719356879, tv_nsec: 0 }) } 2024-06-25T16:10:12.367695Z TRACE invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::orchestrator::auth: signing request

每个参赛作品包括以下内容:

  • 日志条目的时间戳。

  • 条目的日志级别。这个词比如INFODEBUG、或TRACE

  • 生成日志条目的嵌套度集,用冒号 (“:”) 分隔。这可以帮助您识别日志条目的来源。

  • 包含生成日志条目的代码的 Rust 模块路径。

  • 日志消息文本。

跟踪模块的标准输出格式使用 ANSI 转义码对输出进行着色。过滤或搜索输出时,请记住这些转义序列。

注意

嵌套跨度集中显示sdk_invocation_id的是由 SDK 在客户端生成的唯一 ID,用于帮助关联日志消息。它与在的响应中找到的请求编号无关 AWS 服务。

微调您的日志级别

如果您使用支持环境筛选的 crate(例如)tracing_subscriber,则可以按模块控制日志的详细程度。

您可以为每个模块开启相同的日志级别。以下内容将每个模块trace的日志级别设置为:

$ RUST_LOG=trace cargo run

您可以为特定模块开启跟踪级日志记录。在以下示例中,只有来自的日志才aws_smithy_runtime会进入trace关卡。

$ RUST_LOG=aws_smithy_runtime=trace

你可以用逗号分隔多个模块,从而为它们指定不同的日志级别。以下示例将aws_config模块设置为trace级别日志记录,将aws_smithy_runtime模块设置为debug级别日志记录。

$ RUST_LOG=aws_config=trace,aws_smithy_runtime=debug cargo run

下表介绍了一些可用于筛选日志消息的模块:

Prefix 描述

aws_smithy_runtime

请求和响应电汇记录

aws_config

正在加载凭证

aws_sigv4

请求签名和规范请求

要弄清楚需要在日志输出中包含哪些模块,一种方法是先记录所有内容,然后在日志输出中找到 crate 名称以获取所需的信息。然后,您可以相应地设置环境变量并再次运行您的程序。

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。