Aktifkan logging

Dokumen ini menjelaskan cara mengaktifkan logging di Rust. Mencatat permintaan dan respons ke konsol dapat mempermudah pemecahan masalah aplikasi.

Prasyarat

Panduan ini menggunakan Secret Manager API, yang harus diaktifkan sebelum Anda memulai. Untuk mempelajari cara mengaktifkan layanan, ikuti panduan memulai layanan.

Untuk petunjuk penyiapan lengkap library Rust, lihat Mulai menggunakan Rust.

Dependensi

Anda harus mendeklarasikan dependensi dalam file Cargo.toml:

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

Aktifkan logging

Library klien Rust menggunakan crate tracing Tokio untuk mengumpulkan diagnostik yang tercakup, terstruktur, dan sadar asinkron. Crate tracing memisahkan sumber diagnostik (seperti library klien Rust) dari komponen yang mengumpulkan diagnostik ini menggunakan trait Subscriber. Ada banyak implementasi yang tersedia untuk Subscriber. Dalam contoh ini, kita akan menggunakan pelanggan fmt yang disertakan dengan crate tracing-subscriber.

  1. Tambahkan dependensi pada crate tracing-subscriber:

    cargo add tracing tracing-subscriber
    
  2. Tulis fungsi yang menerima ID project sebagai parameter fungsi:

    /// # 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. Perkenalkan beberapa deklarasi penggunaan untuk membuat contoh lebih mudah dibaca:

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

  4. Lakukan inisialisasi pelanggan rekaman aktivitas default:

    tracing_subscriber::fmt::init();

  5. Lakukan inisialisasi klien dengan mengaktifkan pelacakan. Perhatikan panggilan ke .with_tracing():

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

  6. Kemudian, gunakan klien untuk mengirim permintaan:

    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");

Output yang diharapkan

Output (sedikit diedit agar lebih mudah dibaca) akan menyertakan baris seperti:

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

Baris ini mencakup permintaan:

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

Respons:

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

Informasi selengkapnya

Pelanggan default yang dibuat menggunakan tracing_subscriber::fmt::init() dapat dikonfigurasi secara dinamis menggunakan variabel lingkungan RUST_LOG. Lihat dokumentasinya untuk mengetahui detailnya.