Abilita il logging

Questo documento descrive come abilitare il logging in Rust. Registrare le richieste e le risposte nella console può semplificare la risoluzione dei problemi delle applicazioni.

Prerequisiti

Questa guida utilizza l'API Secret Manager, che deve essere abilitata prima di iniziare. Per scoprire come abilitare i servizi, segui la guida rapida del servizio.

Per istruzioni di configurazione complete per le librerie Rust, consulta la sezione Iniziare a utilizzare Rust.

Dipendenze

Devi dichiarare le dipendenze nel file Cargo.toml:

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

Abilita il logging

Le librerie client Rust utilizzano il crate di tracing di Tokio per raccogliere diagnostiche con ambito, strutturate e compatibili con le operazioni asincrone. Il crate di tracing separa le origini delle diagnostiche (ad esempio le librerie client Rust) dai componenti che raccolgono queste diagnostiche utilizzando il tratto Subscriber. Sono disponibili molte implementazioni per Subscriber. In questo esempio utilizzeremo il fmt subscriber incluso nel crate tracing-subscriber.

  1. Aggiungi una dipendenza al crate tracing-subscriber:

    cargo add tracing tracing-subscriber
    
  2. Scrivi una funzione che riceve l'ID progetto come parametro della funzione:

    /// # 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. Inserisci alcune dichiarazioni di utilizzo per rendere l'esempio più leggibile:

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

  4. Inizializza il subscriber di tracing predefinito:

    tracing_subscriber::fmt::init();

  5. Inizializza un client con il tracing abilitato. Tieni presente la chiamata a .with_tracing():

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

  6. Quindi utilizza il client per inviare una richiesta:

    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 previsto:

L'output (leggermente modificato per la leggibilità) includerà una riga come:

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

Questa riga include la richiesta:

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

La risposta:

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

Ulteriori informazioni

Il subscriber predefinito creato utilizzando tracing_subscriber::fmt::init() può essere configurato dinamicamente utilizzando la variabile di ambiente RUST_LOG. Consulta la documentazione per i dettagli.