Logging aktivieren

In diesem Dokument wird beschrieben, wie Sie Logging in Rust aktivieren. Durch das Protokollieren von Anfragen und Antworten in der Konsole kann die Fehlerbehebung bei Anwendungen erleichtert werden.

Vorbereitung

In dieser Anleitung wird die Secret Manager API verwendet, die aktiviert werden muss, bevor Sie beginnen. 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 tracing-Crate von Tokio, um bereichsbezogene, strukturierte und asynchrone Diagnosedaten zu erfassen. Das Tracing-Crate trennt Quellen für Diagnosedaten (z. B. die Rust-Clientbibliotheken) von den Komponenten, die diese Diagnosedaten mithilfe des Subscriber-Traits erfassen. Für Subscriber sind viele Implementierungen verfügbar. In diesem Beispiel verwenden wir den fmt-Subscriber, der im tracing-subscriber-Crate enthalten ist.

  1. Fügen Sie eine Abhängigkeit von der tracing-subscriber-Crate 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 „use“-Deklarationen ein, 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 aktivierter Ablaufverfolgung. Beachten Sie den Aufruf von .with_tracing():

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

  6. Senden Sie dann mit dem Client eine Anfrage:

    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 (zur besseren Lesbarkeit leicht bearbeitet) enthält eine Zeile wie:

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 Standardabonnent kann dynamisch mit der Umgebungsvariable RUST_LOG konfiguriert werden. Weitere Informationen finden Sie in der Dokumentation.