Logging aktivieren

In diesem Dokument wird beschrieben, wie Sie das Logging in Rust aktivieren. Wenn Sie Anfragen und Antworten in der Konsole protokollieren, kann die Fehlerbehebung bei Anwendungen einfacher sein.

Vorbereitung

In dieser Anleitung wird die Secret Manager API verwendet, die aktiviert sein muss, bevor Sie beginnen. Informationen zum Aktivieren von Diensten finden Sie in der Kurzanleitung für Dienste.

Eine vollständige Einrichtungsanleitung für die Rust-Bibliotheken finden Sie unter Erste Schritte mit Rust.

Abhängigkeiten

Sie müssen die Abhängigkeiten in der Datei Cargo.toml deklarieren:

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

Logging aktivieren

Die Rust-Clientbibliotheken verwenden das Tokio-Tracing-Crate, um bereichsbezogene, strukturierte und asynchrone Diagnosen zu erfassen. Das Tracing-Crate trennt Quellen von Diagnosen (z. B. die Rust-Clientbibliotheken) von den Komponenten, die diese Diagnosen mithilfe des Traits Subscriber erfassen. Es gibt viele Implementierungen für Subscriber. In diesem Beispiel verwenden wir den fmt Subscriber der im tracing-subscriber Crate enthalten ist.

  1. Fügen Sie eine Abhängigkeit vom Crate tracing-subscriber hinzu:

    cargo add tracing tracing-subscriber
    
  2. Schreiben Sie eine Funktion, die die Projekt-ID als Funktionsparameter empfängt:

    /// # 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. Fügen Sie einige Deklarationen hinzu, um das Beispiel lesbarer zu machen:

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

  4. Initialisieren Sie den Standard-Tracing-Subscriber:

    tracing_subscriber::fmt::init();

  5. Initialisieren Sie einen Client mit aktiviertem Tracing. Beachten Sie den Aufruf von .with_tracing():

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

  6. Verwenden Sie dann den Client, um eine Anfrage zu senden:

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

Erwartete Ausgabe

Die Ausgabe (leicht bearbeitet, um die Lesbarkeit zu verbessern) enthält eine Zeile wie diese:

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

Diese Zeile enthält die Anfrage:

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

Die Antwort:

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

Weitere Informationen

Der mit tracing_subscriber::fmt::init() erstellte Standard-Subscriber kann dynamisch mit der Umgebungsvariablen RUST_LOG konfiguriert werden. Weitere Informationen finden Sie in der Dokumentation.