啟用記錄功能

本文說明如何在 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. 初始化預設追蹤訂閱者: <0x

    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 環境變數動態設定。詳情請參閱說明文件