启用日志记录

本文档介绍了如何在 Rust 中启用日志记录。将请求和响应记录到控制台可以更轻松地排查应用问题。

前提条件

本指南使用 Secret Manager API,您必须先启用该 API,然后才能开始操作。如需了解如何启用服务,请按照服务快速入门进行操作。

如需查看 Rust 库的完整设置说明,请参阅 Rust 使用入门

依赖项

您必须在 Cargo.toml 文件中声明依赖项:

cargo add google-cloud-secretmanager-v1 google-cloud-gax

启用日志记录

Rust 客户端库使用 Tokio 的 tracing crate 来收集范围明确、结构化且异步感知的诊断信息。跟踪 crate 使用 Subscriber 特征将诊断信息的来源(例如 Rust 客户端库)与收集这些诊断信息的组件分离开来。有许多实现可用于 Subscriber。在此示例中,我们将使用 tracing-subscriber crate 中包含的 fmt 订阅者。

  1. 添加对 tracing-subscriber crate 的依赖项:

    cargo add tracing tracing-subscriber
    
  2. 编写一个将项目 ID 作为函数参数接收的函数:

    /// # Parameters
    /// - `project_id`: the id of a Google Cloud project, or its numeric ID.
    ///   For example: `my-project`.
    pub async fn sample(project_id: &str) -> anyhow::Result<()> {

  3. 引入一些 use 声明,使示例更易于理解:

    use google_cloud_gax::paginator::ItemPaginator;
    use google_cloud_secretmanager_v1::client::SecretManagerService;
    use tracing_subscriber;

  4. 初始化默认的跟踪订阅者: <0x0A

    tracing_subscriber::fmt::init();

  5. 初始化已启用跟踪功能的客户端。请注意对 .with_tracing() 的调用:

    let client = SecretManagerService::builder()
        .with_tracing()
        .build()
        .await?;

  6. 然后使用客户端发送请求:

    let mut items = client
        .list_secrets()
        .set_parent(format!("projects/{project_id}"))
        .by_item();
    println!("listing all secrets in project {project_id}");
    while let Some(secret) = items.next().await.transpose()? {
        println!("  {secret:?}");
    }
    println!("DONE");

预期输出

输出(为了便于阅读,略有修改)将包含如下一行:

2025-11-03T14:17:31.759452Z  INFO list_secrets{self=SecretManagerService ...

此行包含请求:

req=ListSecretsRequest { parent: "projects/... }

回答:

return=Ok(Response { parts: ..., body: ListSecretsResponse { ...

更多信息

使用 tracing_subscriber::fmt::init() 创建的默认订阅者可以使用 RUST_LOG 环境变量进行动态配置。如需了解详情,请参阅其文档