Abilita il logging

Questo documento descrive come abilitare la registrazione in Rust. La registrazione delle richieste e delle 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 attivare i servizi, segui la guida rapida ai servizi.

Per istruzioni di configurazione complete per le librerie Rust, consulta la sezione Guida introduttiva a 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 tracing di Tokio per raccogliere dati diagnostici con ambito, strutturati e asincroni. Il crate di tracciamento separa le origini della diagnostica (come le librerie client Rust) dai componenti che raccolgono queste informazioni diagnostiche utilizzando il tratto Subscriber. Esistono molte implementazioni disponibili per Subscriber. In questo esempio utilizzeremo l'abbonato fmt incluso nel crate tracing-subscriber.

  1. Aggiungi una dipendenza dal 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. Introduci alcune dichiarazioni use 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 sottoscrittore di tracciamento predefinito:

    tracing_subscriber::fmt::init();

  5. Inizializza un client con la tracciabilità abilitata. Nota la chiamata a .with_tracing():

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

  6. Poi 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 una maggiore 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

L'abbonato predefinito creato utilizzando tracing_subscriber::fmt::init() può essere configurato dinamicamente utilizzando la variabile di ambiente RUST_LOG. Per informazioni dettagliate, consulta la relativa documentazione.