Ativar a geração de registros

Neste documento, descrevemos como ativar o registro em Rust. O registro de solicitações e respostas no console pode facilitar a solução de problemas de aplicativos.

Pré-requisitos

Este guia usa a API Secret Manager, que precisa ser ativada antes de começar. Para saber como ativar serviços, siga o guia de início rápido de serviços.

Para instruções completas de configuração das bibliotecas Rust, consulte Começar a usar o Rust.

Dependências

Declare as dependências no arquivo Cargo.toml:

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

Ativar a geração de registros

As bibliotecas de cliente do Rust usam o crate tracing do Tokio para coletar diagnósticos com escopo, estruturados e compatíveis com assincronia. O crate de rastreamento separa fontes de diagnóstico (como as bibliotecas de cliente do Rust) dos componentes que coletam esses diagnósticos usando a trait Subscriber. Há muitas implementações disponíveis para o Subscriber. Neste exemplo, vamos usar o assinante fmt incluído com a caixa tracing-subscriber.

  1. Adicione uma dependência ao crate tracing-subscriber:

    cargo add tracing tracing-subscriber
    
  2. Escreva uma função que receba o ID do projeto como um parâmetro de função:

    /// # 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. Introduza algumas declarações de uso para tornar o exemplo mais legível:

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

  4. Inicialize o subscriber de rastreamento padrão:

    tracing_subscriber::fmt::init();

  5. Inicialize um cliente com o rastreamento ativado. Observe a chamada para .with_tracing():

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

  6. Em seguida, use o cliente para enviar uma solicitação:

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

Resposta esperada

A saída (ligeiramente editada para facilitar a leitura) vai incluir uma linha como:

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

Essa linha inclui a solicitação:

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

A resposta:

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

Mais informações

O assinante padrão criado usando tracing_subscriber::fmt::init() pode ser configurado dinamicamente usando a variável de ambiente RUST_LOG. Consulte os detalhes na documentação.