

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à.

# Registrazione dei log
<a name="logging"></a>

 AWS SDK per Kotlin configura un logger compatibile con [SLF4J](https://www.slf4j.org/manual.html) come predefinito del provider `LoggerProvider` di telemetria. Con SLF4 J, che è un livello di astrazione, è possibile utilizzare uno qualsiasi dei diversi sistemi di registrazione in fase di esecuzione. [I sistemi di registrazione supportati includono [Java Logging APIs, Log4j](https://docs.oracle.com/javase/8/docs/technotes/guides/logging/)[2 e Logback](https://logging.apache.org/log4j/2.x/).](https://logback.qos.ch/)

**avvertimento**  
Si consiglia di utilizzare il wire logging solo per scopi di debug. (La registrazione via cavo è discussa di seguito.) Disattivatela nei vostri ambienti di produzione perché può registrare dati sensibili come indirizzi e-mail, token di sicurezza, chiavi API, password e segreti. Gestione dei segreti AWS La registrazione via cavo registra l'intera richiesta o risposta senza crittografia, anche per una chiamata HTTPS.   
Per richieste o risposte di grandi dimensioni (come il caricamento di un file su Amazon S3) o risposte, anche il verbose wire logging può influire in modo significativo sulle prestazioni dell'applicazione.

## Esempio di configurazione di registrazione di Log4j 2
<a name="log4j2-example"></a>

 Sebbene sia possibile utilizzare qualsiasi libreria di log `SLF4J` compatibile, questo esempio abilita l'output di log dall'SDK nei programmi JVM che utilizzano Log4j 2:

**Dipendenze Gradle**

(Puoi accedere al *X.Y.Z* link per vedere l'ultima versione disponibile.)

```
implementation("org.apache.logging.log4j:log4j-slf4j2-impl:[https://search.maven.org/#search|gav|1|g:org.apache.logging.log4j%20AND%20a:log4j-slf4j2-impl](https://search.maven.org/#search|gav|1|g:org.apache.logging.log4j%20AND%20a:log4j-slf4j2-impl)")
```

**File di configurazione Log4j 2**

Crea un file denominato `log4j2.xml` nella tua `resources` directory (ad esempio,`<project-dir>/src/main/resources`). Aggiungete la seguente configurazione XML al file:

```
<Configuration status="ERROR">
    <Appenders>
        <Console name="Out">
            <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} %-5p %c:%L %X - %encode{%m}{CRLF}%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Out"/>
        </Root>
    </Loggers>
</Configuration>
```

Questa configurazione include l'`%X`identificatore nell'`pattern`attributo che abilita la registrazione MDC (mapped diagnostic context).

L'SDK aggiunge i seguenti elementi MDC per ogni operazione.

**rpc**  
Il nome dell'RPC richiamato, ad esempio. `S3.GetObject`

**sdkInvocationId**  
Un ID univoco assegnato dal client del servizio per l'operazione. L'ID correla tutti gli eventi di registrazione relativi alla chiamata di una singola operazione.

## Specificate la modalità di registro per i messaggi a livello di cavo
<a name="sdk-log-mode"></a>

Per impostazione predefinita, AWS SDK per Kotlin non registra i messaggi a livello cablato perché potrebbero contenere dati sensibili provenienti da richieste e risposte API. Tuttavia, a volte è necessario questo livello di dettaglio per scopi di debug. 

Con Kotlin SDK, puoi impostare una modalità di registro nel codice o utilizzare le impostazioni di ambiente per abilitare la messaggistica di debug per quanto segue:
+ Richieste HTTP
+ Risposte HTTP

La modalità log è supportata da un campo di bit in cui ogni bit è un flag (modalità) e i valori sono additivi. È possibile combinare una modalità di richiesta e una modalità di risposta.

### Imposta la modalità di registro nel codice
<a name="set-log-mode-programmatically"></a>

Per attivare la registrazione aggiuntiva, imposta la `logMode` proprietà quando crei un client di servizio.

L'esempio seguente mostra come abilitare la registrazione delle richieste (con il corpo) e della risposta (senza il corpo).

```
import aws.smithy.kotlin.runtime.client.LogMode

// ...

val client = DynamoDbClient {
    // ...
    logMode = LogMode.LogRequestWithBody + LogMode.LogResponse
}
```

Un valore in modalità di registro impostato durante la costruzione del client di servizio sostituisce qualsiasi valore in modalità di registro impostato dall'ambiente.

### Imposta la modalità di registro dall'ambiente
<a name="set-log-mode-from-enviironment"></a>

Per impostare una modalità di registro a livello globale per tutti i client di servizio non configurati in modo esplicito nel codice, utilizzate uno dei seguenti:
+ Proprietà del sistema JVM: `sdk.logMode`
+ Variabile d'ambiente: `SDK_LOG_MODE`

Sono disponibili i seguenti valori senza distinzione tra maiuscole e minuscole:
+ `LogRequest`
+ `LogRequestWithBody`
+ `LogResponse`
+ `LogResponseWithBody`

Per creare una modalità di registro combinata utilizzando le impostazioni dell'ambiente, separate i valori con un simbolo pipe ()`|`.

Ad esempio, gli esempi seguenti impostano la stessa modalità di registro dell'esempio precedente.

```
# Environment variable.
export SDK_LOG_MODE=LogRequestWithBody|LogResponse
```

```
# JVM system property.
java -Dsdk.logMode=LogRequestWithBody|LogResponse ...
```

**Nota**  
È inoltre necessario configurare un logger SLF4 J compatibile e impostare il livello di registrazione su DEBUG per abilitare la registrazione a livello di cavo.