

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurazione e utilizzo della registrazione nell' AWS SDK per Rust
<a name="logging"></a>

 AWS SDK per Rust Utilizza il framework di [tracciamento](http://tracing.rs/) per la registrazione. Per abilitare la registrazione, aggiungi la `tracing-subscriber` cassa e inizializzala nella tua applicazione Rust. I log includono timestamp, livelli di registro e percorsi dei moduli, che aiutano a eseguire il debug delle richieste API e del comportamento dell'SDK. Usa la variabile di `RUST_LOG` ambiente per controllare la verbosità dei log, filtrando per modulo se necessario. 

## Come abilitare la registrazione nell'SDK per Rust AWS
<a name="enableLogging"></a>

1. In un prompt dei comandi per la directory del progetto, aggiungi [tracing-subscriber](https://crates.io/crates/tracing-subscriber) crate come dipendenza:

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

   Questo aggiunge la cassa alla sezione del file. `[dependencies]` `Cargo.toml`

1. Inizializza l'abbonato. Di solito questa operazione viene eseguita all'inizio della `main` funzione prima di chiamare qualsiasi operazione SDK for 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(())               
   }
   ```

1. Attiva la registrazione utilizzando la variabile di `RUST_LOG` ambiente. Per abilitare la visualizzazione delle informazioni di registrazione, in un prompt dei comandi, impostate la variabile di `RUST_LOG` ambiente sul livello a cui desiderate effettuare il login. L'esempio seguente imposta la registrazione sul livello: `debug`

------
#### [ Linux/macOS ]

   ```
   $ RUST_LOG=debug
   ```

------
#### [ Windows ]

   Se si utilizza VSCode, la finestra del terminale spesso è predefinita su. PowerShell Verifica il tipo di prompt che stai utilizzando.

   ```
   C:\> set RUST_LOG=debug
   ```

------
#### [ PowerShell ]

   ```
   PS C:\> $ENV:RUST_LOG="debug"
   ```

------

1. Esegui il programma:

   ```
   $ cargo run
   ```

   Dovresti vedere un output aggiuntivo nella finestra della console o del terminale.

Per ulteriori informazioni, consulta [Filtrare gli eventi con variabili di ambiente](https://docs.rs/tracing-subscriber/0.3.18/tracing_subscriber/fmt/index.html#filtering-events-with-environment-variables) nella `tracing-subscriber` documentazione.

## Interpreta l'output del registro
<a name="logging-understanding"></a>

Dopo aver attivato la registrazione seguendo i passaggi della sezione precedente, le informazioni di registro aggiuntive verranno stampate in modo predefinito. 

Se si utilizza il formato di output del registro predefinito (chiamato «completo» dal modulo di tracciamento), le informazioni visualizzate nell'output del registro sono simili alle seguenti:

```
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
```

Ogni voce include quanto segue:
+ Il timestamp della voce di registro.
+ Il livello di registro della voce. Questa è una parola come `INFO``DEBUG`, o`TRACE`.
+ L'insieme annidato di [intervalli da](https://docs.rs/tracing/latest/tracing/span/index.html) cui è stata generata la voce di registro, separati da due punti («:»). Ciò consente di identificare l'origine della voce di registro.
+ Il percorso del modulo Rust contenente il codice che ha generato la voce di registro.
+ Il testo del messaggio di log.

I formati di output standard del modulo di tracciamento utilizzano codici di escape ANSI per colorare l'output. Tenete a mente queste sequenze di escape quando filtrate o cercate l'output.

**Nota**  
All'interno del `sdk_invocation_id` set annidato di intervalli viene visualizzato un ID univoco generato dal client SDK per facilitare la correlazione dei messaggi di registro. Non è correlato all'ID della richiesta trovato nella risposta di un. Servizio AWS

## Ottimizza i tuoi livelli di registrazione
<a name="logging-control"></a>

Se utilizzi una cassa che supporta il filtraggio di un ambiente, ad esempio`tracing_subscriber`, puoi controllare la verbosità dei log per modulo.

Puoi attivare lo stesso livello di registrazione per ogni modulo. Quanto segue imposta il livello di registrazione su ogni `trace` modulo: 

```
$ RUST_LOG=trace cargo run
```

È possibile attivare la registrazione a livello di traccia per un modulo specifico. Nell'esempio seguente, solo i log provenienti da `aws_smithy_runtime` verranno inseriti al livello. `trace`

```
$ RUST_LOG=aws_smithy_runtime=trace
```

È possibile specificare un livello di registro diverso per più moduli separandoli con virgole. L'esempio seguente imposta il `aws_config` modulo sulla registrazione dei `trace` livelli e il `aws_smithy_runtime` modulo sulla registrazione dei livelli. `debug` 

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

La tabella seguente descrive alcuni dei moduli che è possibile utilizzare per filtrare i messaggi di registro:


| Prefix | Descrizione | 
| --- | --- | 
|  `aws_smithy_runtime`  |  Registrazione via cavo di richiesta e risposta  | 
|  `aws_config`  |  Caricamento delle credenziali  | 
|  `aws_sigv4`  |  Richieste di firma e richieste canoniche  | 

Un modo per capire quali moduli è necessario includere nell'output di registro è registrare prima tutto, quindi trovare il nome della cassa nell'output del registro per le informazioni necessarie. Quindi puoi impostare la variabile di ambiente di conseguenza ed eseguire nuovamente il programma.