Activer la journalisation

Ce document explique comment activer la journalisation dans Rust. L'enregistrement des requêtes et des réponses dans la console peut faciliter le dépannage des applications.

Prérequis

Ce guide utilise l'API Secret Manager, qui doit être activée avant de commencer. Pour savoir comment activer des services, suivez le guide de démarrage rapide des services.

Pour obtenir des instructions de configuration complètes pour les bibliothèques Rust, consultez Premiers pas avec Rust.

Dépendances

Vous devez déclarer les dépendances dans votre fichier Cargo.toml :

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

Activer la journalisation

Les bibliothèques clientes Rust utilisent le crate tracing de Tokio pour collecter des diagnostics structurés, à portée définie et compatibles avec les opérations asynchrones. La crate de traçage sépare les sources de diagnostics (telles que les bibliothèques clientes Rust) des composants qui collectent ces diagnostics à l'aide du trait Subscriber. De nombreuses implémentations sont disponibles pour Subscriber. Dans cet exemple, nous allons utiliser l'abonné fmt inclus avec la crate tracing-subscriber.

  1. Ajoutez une dépendance au crate tracing-subscriber :

    cargo add tracing tracing-subscriber
    
  2. Écrivez une fonction qui reçoit l'ID du projet en tant que paramètre de fonction :

    /// # 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. Ajoutez quelques déclarations d'utilisation pour rendre l'exemple plus lisible :

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

  4. Initialisez l'abonné de trace par défaut :

    tracing_subscriber::fmt::init();

  5. Initialisez un client avec le traçage activé. Notez l'appel à .with_tracing() :

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

  6. Utilisez ensuite le client pour envoyer une requête :

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

Résultat attendu

Le résultat (légèrement modifié pour plus de lisibilité) inclut une ligne telle que :

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

Cette ligne inclut la demande :

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

La réponse :

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

En savoir plus

L'abonné par défaut créé à l'aide de tracing_subscriber::fmt::init() peut être configuré de manière dynamique à l'aide de la variable d'environnement RUST_LOG. Pour en savoir plus, consultez sa documentation.