Ativar o registro do AWS SDK para Rust código - AWS SDK para Rust

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Ativar o registro do AWS SDK para Rust código

O AWS SDK para Rust usa a estrutura de rastreamento para registro.

  1. Em um prompt de comando para o diretório do seu projeto, adicione a caixa tracing-subscriber como uma dependência:

    $ cargo add tracing-subscriber --features tracing-subscriber/env-filter

    Isso adiciona a caixa à [dependencies] seção do seu Cargo.toml arquivo.

  2. Inicialize o assinante. Normalmente, isso é feito no início da main função, antes de chamar qualquer SDK para a operação do Rust:

    use aws_config::BehaviorVersion; type BoxError = Box<dyn Error + Send + Sync>; #[tokio::main] async fn main() -> Result<(), BoxError> { tracing_subscriber::fmt::init(); // Initialize the subscriber. let config = aws_config::defaults(BehaviorVersion::latest()) .load() .await; let s3 = aws_sdk_s3::Client::new(&config); let _resp = s3.list_buckets() .send() .await?; Ok(()) }
  3. Ative o registro usando a variável de RUST_LOG ambiente. Para habilitar a exibição de informações de registro, em um prompt de comando, defina a variável de RUST_LOG ambiente para o nível em que você deseja fazer login. O exemplo a seguir define o registro no debug nível:

    Linux/macOS
    $ RUST_LOG=debug
    Windows

    Se você estiver usando VSCode, a janela do terminal geralmente usa como padrão. PowerShell Verifique o tipo de prompt que você está usando.

    C:\> set RUST_LOG=debug
    PowerShell
    PS C:\> $ENV:RUST_LOG="debug"
  4. Execute o programa:

    $ cargo run

    Você deve ver uma saída adicional na janela do console ou do terminal.

Para obter mais informações, consulte filtragem de eventos com variáveis de ambiente na tracing-subscriber documentação.

Interprete a saída do log

Depois de ativar o registro seguindo as etapas da seção anterior, as informações adicionais de registro serão impressas de forma padronizada por padrão.

Se você estiver usando o formato de saída de registro padrão (chamado de “completo” pelo módulo de rastreamento), as informações que você vê na saída de registro serão semelhantes a estas:

2024-06-25T16:10:12.367482Z DEBUG invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt:lazy_load_identity: aws_smithy_runtime::client::identity::cache::lazy: identity cache miss occurred; added new identity (took 480.892ms) new_expiration=2024-06-25T23:07:59Z valid_for=25066.632521s partition=IdentityCachePartition(7) 2024-06-25T16:10:12.367602Z DEBUG invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::identity::cache::lazy: loaded identity 2024-06-25T16:10:12.367643Z TRACE invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::orchestrator::auth: resolved identity identity=Identity { data: Credentials {... }, expiration: Some(SystemTime { tv_sec: 1719356879, tv_nsec: 0 }) } 2024-06-25T16:10:12.367695Z TRACE invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::orchestrator::auth: signing request

Cada entrada inclui o seguinte:

  • O carimbo de data/hora da entrada do registro.

  • O nível de registro da entrada. Esta é uma palavra comoINFO,DEBUG, ouTRACE.

  • O conjunto aninhado de extensões a partir do qual a entrada de registro foi gerada, separados por dois pontos (“:”). Isso ajuda você a identificar a origem da entrada do registro.

  • O caminho do módulo Rust contendo o código que gerou a entrada do registro.

  • O texto da mensagem de log.

Os formatos de saída padrão do módulo de rastreamento usam códigos de escape ANSI para colorir a saída. Lembre-se dessas sequências de escape ao filtrar ou pesquisar a saída.

nota

O sdk_invocation_id que aparece no conjunto aninhado de extensões é um ID exclusivo gerado pelo lado do cliente pelo SDK para ajudar a correlacionar as mensagens de log. Não está relacionado ao ID da solicitação encontrado na resposta de um AWS service (Serviço da AWS).

Ajuste seus níveis de registro

Se você usar uma caixa que ofereça suporte a uma filtragem de ambiente, como, por exemplotracing_subscriber, você pode controlar a verbosidade dos registros por módulo.

Você pode ativar o mesmo nível de registro para cada módulo. O seguinte define o nível de registro trace para cada módulo:

$ RUST_LOG=trace cargo run

Você pode ativar o registro em nível de rastreamento para um módulo específico. No exemplo a seguir, somente os registros provenientes de aws_smithy_runtime entrarão no trace nível.

$ RUST_LOG=aws_smithy_runtime=trace

Você pode especificar um nível de registro diferente para vários módulos separando-os com vírgulas. O exemplo a seguir define o aws_config módulo para registro em trace nível e o aws_smithy_runtime módulo para registro em debug nível.

$ RUST_LOG=aws_config=trace,aws_smithy_runtime=debug cargo run

A tabela a seguir descreve alguns dos módulos que você pode usar para filtrar mensagens de log:

Prefixo Descrição

aws_smithy_runtime

Registro telefônico de solicitação e resposta

aws_config

Carregamento de credenciais

aws_sigv4

Solicitar assinatura e solicitações canônicas

Uma maneira de descobrir quais módulos você precisa incluir na saída do log é primeiro registrar tudo e, em seguida, encontrar o nome da caixa na saída do log para obter as informações de que você precisa. Em seguida, você pode definir a variável de ambiente adequadamente e executar seu programa novamente.