

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 con l'SDK for Java 2.x
<a name="logging-slf4j"></a>

 AWS SDK for Java 2.x Utilizza [SLF4J](https://www.slf4j.org/manual.html), che è un livello di astrazione che consente l'uso di uno qualsiasi dei diversi sistemi di registrazione in fase di esecuzione.

I sistemi di registrazione supportati includono, tra gli altri, Java Logging Framework e Apache [Log4j](https://logging.apache.org/log4j/2.x/) 2. Questo argomento mostra come utilizzare Log4j 2 come sistema di registrazione per lavorare con l'SDK.

## File di configurazione Log4j 2
<a name="log4j-configuration-file"></a>

In genere si utilizza un file di configurazione, denominato `log4j2.xml` Log4j 2. File di configurazione di esempio sono mostrati di seguito. Per ulteriori informazioni sui valori utilizzati nel file di configurazione, consulta il [manuale per la configurazione di Log4j](https://logging.apache.org/log4j/2.x/manual/configuration.html).

Il `log4j2.xml` file deve trovarsi nel classpath all'avvio dell'applicazione. Per un progetto Maven, inserisci il file nella directory. `<project-dir>/src/main/resources`

[Il file di `log4j2.xml` configurazione specifica proprietà come il [livello di registrazione](https://logging.apache.org/log4j/2.x/manual/configuration.html#Loggers), a cui viene inviato l'output di registrazione (ad esempio, [a un file o alla console) e il](https://logging.apache.org/log4j/2.x/manual/appenders.html) formato dell'output.](https://logging.apache.org/log4j/2.x/manual/layouts.html) Il livello di registrazione specifica il livello di dettaglio emesso da Log4j 2. [https://logging.apache.org/log4j/2.x/manual/architecture.html#](https://logging.apache.org/log4j/2.x/manual/architecture.html#) Il livello di registrazione è impostato in modo indipendente per ogni gerarchia. La gerarchia di registrazione principale che si utilizza con è. AWS SDK for Java 2.x `software.amazon.awssdk`

## Aggiungi dipendenza dalla registrazione
<a name="sdk-java-logging-classpath"></a>

Per configurare l'associazione Log4j 2 per SLF4 J nel tuo file di build, usa quanto segue.

------
#### [ Maven ]

Aggiungi i seguenti elementi al tuo `pom.xml` file.

```
...
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-slf4j2-impl</artifactId>
   <version>VERSION</version>
</dependency>
...
```

------
#### [ Gradle–Kotlin DSL ]

Aggiungi quanto segue al tuo `build.gradle.kts` file.

```
...
dependencies {
    ...
    implementation("org.apache.logging.log4j:log4j-slf4j2-impl:VERSION")
    ...
}
...
```

------

Usa `2.20.0` per la versione minima dell'`log4j-slf4j2-impl`artefatto. Per la versione più recente, usa la versione pubblicata su [Maven](https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-slf4j2-impl) Central. Sostituisci *VERSION* con la versione che utilizzerai.

## Errori e avvisi specifici dell'SDK
<a name="sdk-java-logging-service"></a>

Ti consigliamo di lasciare sempre la gerarchia dei logger «software.amazon.awssdk» impostata su «WARN» per catturare eventuali messaggi importanti dalle librerie client dell'SDK. Ad esempio, se il client Amazon S3 rileva che l'applicazione non ha chiuso correttamente `InputStream` e che potrebbe esserci una perdita di risorse, il client S3 lo segnala tramite un messaggio di avviso ai log. Questo garantisce inoltre che i messaggi vengono registrati se il client presenta problemi di gestione delle richieste o delle risposte.

*Il `log4j2.xml` file seguente lo imposta su «WARN», che genera l'output di messaggi di avviso e `rootLogger` a livello di errore da tutti i logger dell'applicazione, inclusi quelli nella gerarchia «software.amazon.awssdk».* In alternativa, puoi impostare esplicitamente la gerarchia dei logger «software.amazon.awssdk» su «WARN», se utilizzata. `<Root level="ERROR">`

**Esempio di file di configurazione Log4j2.xml**

Questa configurazione registrerà i messaggi ai livelli «ERROR» e «WARN» nella console per tutte le gerarchie di logger.

```
<Configuration status="WARN">
 <Appenders>
  <Console name="ConsoleAppender" target="SYSTEM_OUT">
   <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c:%L - %m%n" />
  </Console>
 </Appenders>

 <Loggers>
  <Root level="WARN">
   <AppenderRef ref="ConsoleAppender"/>
  </Root>
 </Loggers>
</Configuration>
```

## Registrazione riassuntiva di richieste/risposte
<a name="sdk-java-logging-request-response"></a>

Ogni richiesta a un Servizio AWS genera un ID di AWS richiesta univoco, utile in caso di problemi relativi alla gestione di Servizio AWS una richiesta. AWS IDs le richieste sono accessibili a livello di codice tramite [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/exception/SdkServiceException.html#requestId()](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/exception/SdkServiceException.html#requestId())oggetti nell'SDK per qualsiasi chiamata di servizio non riuscita e possono anche essere segnalate tramite il livello di registro «DEBUG» del logger «software.amazon.awssdk.request».

Il file seguente consente un riepilogo delle richieste e delle risposte. `log4j2.xml`

```
<Configuration status="WARN">
 <Appenders>
  <Console name="ConsoleAppender" target="SYSTEM_OUT">
   <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c:%L - %m%n" />
  </Console>
 </Appenders>

 <Loggers>
  <Root level="ERROR">
   <AppenderRef ref="ConsoleAppender"/>
  </Root>
  <Logger name="software.amazon.awssdk" level="WARN" />
  <Logger name="software.amazon.awssdk.request" level="DEBUG" />
 </Loggers>
</Configuration>
```

Di seguito è riportato un esempio di output del log:

```
2022-09-23 16:02:08 [main] DEBUG software.amazon.awssdk.request:85 - Sending Request: DefaultSdkHttpFullRequest(httpMethod=POST, protocol=https, host=dynamodb.us-east-1.amazonaws.com, encodedPath=/, headers=[amz-sdk-invocation-id, Content-Length, Content-Type, User-Agent, X-Amz-Target], queryParameters=[])
2022-09-23 16:02:08 [main] DEBUG software.amazon.awssdk.request:85 - Received successful response: 200, Request ID: QS9DUMME2NHEDH8TGT9N5V53OJVV4KQNSO5AEMVJF66Q9ASUAAJG, Extended Request ID: not available
```

Se sei interessato solo all'ID della richiesta, usa`<Logger name="software.amazon.awssdk.requestId" level="DEBUG" />`.

## Registrazione SDK a livello di debug
<a name="sdk-debug-level-logging"></a>

Se hai bisogno di maggiori dettagli su ciò che sta facendo l'SDK, puoi impostare il livello di registrazione del logger su. `software.amazon.awssdk` `DEBUG` A questo livello, l'SDK genera una grande quantità di dettagli, quindi ti consigliamo di impostare questo livello per risolvere gli errori utilizzando i test di integrazione. 

A questo livello di registrazione, l'SDK registra le informazioni sulla configurazione, la risoluzione delle credenziali, gli intercettori di esecuzione, l'attività TLS di alto livello, la firma delle richieste e molto altro.

Di seguito è riportato un esempio di istruzioni emesse dall'SDK a livello di chiamata. `DEBUG` `S3Client#listBuckets()`

```
DEBUG s.a.a.r.p.AwsRegionProviderChain:57 - Unable to load region from software.amazon.awssdk.regions.providers.SystemSettingsRegionProvider@324dcd31:Unable to load region from system settings. Region must be specified either via environment variable (AWS_REGION) or  system property (aws.region).
DEBUG s.a.a.c.i.h.l.ClasspathSdkHttpServiceProvider:85 - The HTTP implementation loaded is software.amazon.awssdk.http.apache.ApacheSdkHttpService@a23a01d
DEBUG s.a.a.c.i.ExecutionInterceptorChain:85 - Creating an interceptor chain that will apply interceptors in the following order: [software.amazon.awssdk.core.internal.interceptor.HttpChecksumValidationInterceptor@69b2f8e5, software.amazon.awssdk.awscore.interceptor.HelpfulUnknownHostExceptionInterceptor@6331250e, software.amazon.awssdk.awscore.eventstream.EventStreamInitialRequestInterceptor@a10c1b5, software.amazon.awssdk.awscore.interceptor.TraceIdExecutionInterceptor@644abb8f, software.amazon.awssdk.services.s3.auth.scheme.internal.S3AuthSchemeInterceptor@1a411233, software.amazon.awssdk.services.s3.endpoints.internal.S3ResolveEndpointInterceptor@70325d20, software.amazon.awssdk.services.s3.endpoints.internal.S3RequestSetEndpointInterceptor@7c2327fa, software.amazon.awssdk.services.s3.internal.handlers.StreamingRequestInterceptor@4d847d32, software.amazon.awssdk.services.s3.internal.handlers.CreateBucketInterceptor@5f462e3b, software.amazon.awssdk.services.s3.internal.handlers.CreateMultipartUploadRequestInterceptor@3d7fa3ae, software.amazon.awssdk.services.s3.internal.handlers.DecodeUrlEncodedResponseInterceptor@58065f0c, software.amazon.awssdk.services.s3.internal.handlers.GetBucketPolicyInterceptor@3605c4d3, software.amazon.awssdk.services.s3.internal.handlers.S3ExpressChecksumInterceptor@585c13de, software.amazon.awssdk.services.s3.internal.handlers.AsyncChecksumValidationInterceptor@187eb9a8, software.amazon.awssdk.services.s3.internal.handlers.SyncChecksumValidationInterceptor@726a6b94, software.amazon.awssdk.services.s3.internal.handlers.EnableTrailingChecksumInterceptor@6ad11a56, software.amazon.awssdk.services.s3.internal.handlers.ExceptionTranslationInterceptor@522b2631, software.amazon.awssdk.services.s3.internal.handlers.GetObjectInterceptor@3ff57625, software.amazon.awssdk.services.s3.internal.handlers.CopySourceInterceptor@1ee29c84, software.amazon.awssdk.services.s3.internal.handlers.ObjectMetadataInterceptor@7c8326a4]
DEBUG s.a.a.u.c.CachedSupplier:85 - (SsoOidcTokenProvider()) Cached value is stale and will be refreshed.
...
DEBUG s.a.a.c.i.ExecutionInterceptorChain:85 - Creating an interceptor chain that will apply interceptors in the following order: [software.amazon.awssdk.core.internal.interceptor.HttpChecksumValidationInterceptor@51351f28, software.amazon.awssdk.awscore.interceptor.HelpfulUnknownHostExceptionInterceptor@21618fa7, software.amazon.awssdk.awscore.eventstream.EventStreamInitialRequestInterceptor@15f2eda3, software.amazon.awssdk.awscore.interceptor.TraceIdExecutionInterceptor@34cf294c, software.amazon.awssdk.services.sso.auth.scheme.internal.SsoAuthSchemeInterceptor@4d7aaca2, software.amazon.awssdk.services.sso.endpoints.internal.SsoResolveEndpointInterceptor@604b1e1d, software.amazon.awssdk.services.sso.endpoints.internal.SsoRequestSetEndpointInterceptor@62566842]
...
DEBUG s.a.a.request:85 - Sending Request: DefaultSdkHttpFullRequest(httpMethod=GET, protocol=https, host=portal.sso.us-east-1.amazonaws.com, encodedPath=/federation/credentials, headers=[amz-sdk-invocation-id, User-Agent, x-amz-sso_bearer_token], queryParameters=[role_name, account_id])
DEBUG s.a.a.c.i.h.p.s.SigningStage:85 - Using SelectedAuthScheme: smithy.api#noAuth
DEBUG s.a.a.h.a.i.c.SdkTlsSocketFactory:366 - Connecting socket to portal.sso.us-east-1.amazonaws.com/18.235.195.183:443 with timeout 2000
...
DEBUG s.a.a.requestId:85 - Received successful response: 200, Request ID: bb4f40f4-e920-4b5c-8648-58f26e7e08cd, Extended Request ID: not available
DEBUG s.a.a.request:85 - Received successful response: 200, Request ID: bb4f40f4-e920-4b5c-8648-58f26e7e08cd, Extended Request ID: not available
DEBUG s.a.a.u.c.CachedSupplier:85 - (software.amazon.awssdk.services.sso.auth.SsoCredentialsProvider@b965857) Successfully refreshed cached value. Next Prefetch Time: 2024-04-25T22:03:10.097Z. Next Stale Time: 2024-04-25T22:05:30Z
DEBUG s.a.a.c.i.ExecutionInterceptorChain:85 - Interceptor 'software.amazon.awssdk.services.s3.endpoints.internal.S3RequestSetEndpointInterceptor@7c2327fa' modified the message with its modifyHttpRequest method.
...
DEBUG s.a.a.c.i.h.p.s.SigningStage:85 - Using SelectedAuthScheme: aws.auth#sigv4
...
DEBUG s.a.a.a.s.Aws4Signer:85 - AWS4 Canonical Request: GET
...
DEBUG s.a.a.h.a.a.i.s.DefaultV4RequestSigner:85 - AWS4 String to sign: AWS4-HMAC-SHA256
20240425T210631Z
20240425/us-east-1/s3/aws4_request
aafb7784627fa7a49584256cb746279751c48c2076f813259ef767ecce304d64
DEBUG s.a.a.h.a.i.c.SdkTlsSocketFactory:366 - Connecting socket to s3.us-east-1.amazonaws.com/52.217.41.86:443 with timeout 2000
...
```

Il `log4j2.xml` file seguente configura l'output precedente.

```
<Configuration status="WARN">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%-5p %c{1.}:%L - %m%n" />
        </Console>
    </Appenders>

    <Loggers>
        <Root level="WARN">
            <AppenderRef ref="ConsoleAppender"/>
        </Root>
        <Logger name="software.amazon.awssdk" level="DEBUG" />
    </Loggers>
</Configuration>
```

## Abilita la registrazione dei cavi
<a name="sdk-java-logging-verbose"></a>

Può essere utile visualizzare le richieste e le risposte esatte che l'SDK for Java 2.x invia e riceve. Se è necessario accedere a queste informazioni, è possibile abilitarle temporaneamente aggiungendo la configurazione necessaria in base al client HTTP utilizzato dal client di servizio.

Per impostazione predefinita, i client di servizio sincroni, come [S3Client, utilizzano un Apache sottostante, mentre i client](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Client.html) di servizio asincroni HttpClient, come [S3 AsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html), utilizzano un client HTTP non bloccante Netty.

Di seguito è riportato un elenco dettagliato dei client HTTP che è possibile utilizzare per le due categorie di client di servizio:


| Client HTTP sincroni | Client HTTP asincroni | 
| --- | --- | 
| [ApacheHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html) (predefinito) | [NettyNioAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html) (predefinito) | 
| [UrlConnectionHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.html) | [AwsCrtAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.html) | 
| [AwsCrtHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtHttpClient.html) |  | 
| [Apache 5 HttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.html)  | 

Consulta la scheda appropriata di seguito per le impostazioni di configurazione che devi aggiungere in base al client HTTP sottostante.

**avvertimento**  
Ti consigliamo di usare la registrazione in rete solo per scopi di debug. È opportuno disabilitarla negli ambienti di produzione in quanto può registrare dati sensibili. L'intera richiesta o risposta senza crittografia viene registrata, anche per una chiamata HTTPS. Per richieste di grandi dimensioni (ad esempio, per caricare un file Amazon S3) o risposte, anche il verbose wire logging può influire in modo significativo sulle prestazioni dell'applicazione.

------
#### [ ApacheHttpClient ]

Aggiungi il logger «org.apache.http.wire» al file di `log4j2.xml` configurazione e imposta il livello su «DEBUG».

Il seguente `log4j2.xml` file attiva la registrazione cablata completa per Apache. HttpClient

```
<Configuration status="WARN">
 <Appenders>
  <Console name="ConsoleAppender" target="SYSTEM_OUT">
   <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c:%L - %m%n" />
  </Console>
 </Appenders>

 <Loggers>
  <Root level="WARN">
   <AppenderRef ref="ConsoleAppender"/>
  </Root>
  <Logger name="software.amazon.awssdk" level="WARN" />
  <Logger name="software.amazon.awssdk.request" level="DEBUG" />
  <Logger name="org.apache.http.wire" level="DEBUG" />
 </Loggers>
</Configuration>
```

È necessaria un'ulteriore dipendenza di Maven dall'`log4j-1.2-api`artefatto per la registrazione via cavo con Apache, poiché utilizza 1.2 sotto il cofano. 

Il set completo di dipendenze Maven per log4j 2, incluso il wire logging per il client HTTP Apache, è mostrato nei seguenti frammenti di file di build.

**Maven**

```
...
<dependencyManagement>
    ...
    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-bom</artifactId>
            <version>VERSION</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
     </dependencies>
</dependencyManagement>
...
<!-- The following is needed for Log4j2 with SLF4J -->
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-slf4j2-impl</artifactId>
</dependency>

<!-- The following is needed for Apache HttpClient wire logging -->
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-1.2-api</artifactId>
</dependency>
...
```

**DSL Gradle-Kotlin**

```
...
dependencies {
    ...
    implementation(platform("org.apache.logging.log4j:log4j-bom:VERSION"))
    implementation("org.apache.logging.log4j:log4j-slf4j2-impl")
    implementation("org.apache.logging.log4j:log4j-1.2-api")
}
...
```

Usa `2.20.0` per la versione minima dell'artefatto. `log4j-bom` Per la versione più recente, usa la versione pubblicata su [Maven](https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-bom) Central. Sostituisci *VERSION* con la versione che utilizzerai.

------
#### [ Apache5HttpClient ]

Aggiungi il logger «org.apache.hc.client5.http.wire» al file di configurazione e imposta il livello su «DEBUG». `log4j2.xml`

`log4j2.xml`Il seguente file attiva la registrazione cablata completa per Apache5. HttpClient

```
<Configuration status="WARN">
 <Appenders>
  <Console name="ConsoleAppender" target="SYSTEM_OUT">
   <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c:%L - %m%n" />
  </Console>
 </Appenders>

 <Loggers>
  <Root level="WARN">
   <AppenderRef ref="ConsoleAppender"/>
  </Root>
  <Logger name="software.amazon.awssdk" level="WARN" />
  <Logger name="software.amazon.awssdk.request" level="DEBUG" />
  <Logger name="org.apache.hc.client5.http.wire" level="DEBUG" />
 </Loggers>
</Configuration>
```

------
#### [ UrlConnectionHttpClient ]

Per registrare i dettagli dei client di servizio che utilizzano il`UrlConnectionHttpClient`, create innanzitutto un `logging.properties` file con i seguenti contenuti:

```
handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=FINEST
sun.net.www.protocol.http.HttpURLConnection.level=ALL
```

Imposta la seguente proprietà del sistema JVM con il percorso completo di: `logging.properties`

```
-Djava.util.logging.config.file=/full/path/to/logging.properties
```

Questa configurazione registrerà solo le intestazioni della richiesta e della risposta, ad esempio:

```
<Request>  FINE: sun.net.www.MessageHeader@35a9782c11 pairs: {GET /fileuploadtest HTTP/1.1: null}{amz-sdk-invocation-id: 5f7e707e-4ac5-bef5-ba62-00d71034ffdc}{amz-sdk-request: attempt=1; max=4}{Authorization: AWS4-HMAC-SHA256 Credential=<deleted>/20220927/us-east-1/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-request;host;x-amz-content-sha256;x-amz-date;x-amz-te, Signature=e367fa0bc217a6a65675bb743e1280cf12fbe8d566196a816d948fdf0b42ca1a}{User-Agent: aws-sdk-java/2.17.230 Mac_OS_X/12.5 OpenJDK_64-Bit_Server_VM/25.332-b08 Java/1.8.0_332 vendor/Amazon.com_Inc. io/sync http/UrlConnection cfg/retry-mode/legacy}{x-amz-content-sha256: UNSIGNED-PAYLOAD}{X-Amz-Date: 20220927T133955Z}{x-amz-te: append-md5}{Host: tkhill-test1.s3.amazonaws.com}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}
<Response> FINE: sun.net.www.MessageHeader@70a36a6611 pairs: {null: HTTP/1.1 200 OK}{x-amz-id-2: sAFeZDOKdUMsBbkdjyDZw7P0oocb4C9KbiuzfJ6TWKQsGXHM/dFuOvr2tUb7Y1wEHGdJ3DSIxq0=}{x-amz-request-id: P9QW9SMZ97FKZ9X7}{Date: Tue, 27 Sep 2022 13:39:57 GMT}{Last-Modified: Tue, 13 Sep 2022 14:38:12 GMT}{ETag: "2cbe5ad4a064cedec33b452bebf48032"}{x-amz-transfer-encoding: append-md5}{Accept-Ranges: bytes}{Content-Type: text/plain}{Server: AmazonS3}{Content-Length: 67}
```

Per vedere i request/response corpi, aggiungili `-Djavax.net.debug=all` alle proprietà JVM. Questa proprietà aggiuntiva registra una grande quantità di informazioni, incluse tutte le informazioni SSL. 

Nella console di registro o nel file di registro, cercate `"GET"` o accedete rapidamente `"POST"` alla sezione del registro contenente le richieste e le risposte effettive. Cerca `"Plaintext before ENCRYPTION"` le richieste e le risposte `"Plaintext after DECRYPTION"` per visualizzare il testo completo delle intestazioni e dei corpi.

------
#### [ NettyNioAsyncHttpClient ]

Se il client di servizio asincrono utilizza l'impostazione predefinita`NettyNioAsyncHttpClient`, aggiungi due logger aggiuntivi al `log4j2.xml` file per registrare le intestazioni HTTP e i corpi di richiesta/risposta.

```
<Logger name="io.netty.handler.logging" level="DEBUG" />
<Logger name="io.netty.handler.codec.http2.Http2FrameLogger" level="DEBUG" />
```

Ecco un esempio completo: `log4j2.xml`

```
<Configuration status="WARN">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c:%L - %m%n" />
        </Console>
    </Appenders>

    <Loggers>
        <Root level="WARN">
            <AppenderRef ref="ConsoleAppender"/>
        </Root>
        <Logger name="software.amazon.awssdk" level="WARN" />
        <Logger name="software.amazon.awssdk.request" level="DEBUG" />
        <Logger name="io.netty.handler.logging" level="DEBUG" />
        <Logger name="io.netty.handler.codec.http2.Http2FrameLogger" level="DEBUG" />
    </Loggers>
</Configuration>
```

Queste impostazioni registrano tutti i dettagli e i request/response corpi delle intestazioni.

------
#### [ AwsCrtAsyncHttpClient/AwsCrtHttpClient ]

Se il client di servizio è stato configurato per utilizzare un'istanza di un client HTTP AWS basato su CRT, è possibile registrare i dettagli impostando le proprietà del sistema JVM o a livello di codice.


|  | 
| --- |
|  Log to a file at "Debug" level  | 
|  Utilizzo delle proprietà di sistema: <pre>-Daws.crt.log.level=Trace <br />-Daws.crt.log.destination=File <br />-Daws.crt.log.filename=<path to file></pre>  |  A livello di codice: <pre>import software.amazon.awssdk.crt.Log;<br /><br />// Execute this statement before constructing the SDK service client.<br />Log.initLoggingToFile(Log.LogLevel.Trace, "<path to file>");</pre>  | 
|  Log to the console at "Debug" level  | 
|  Utilizzo delle proprietà del sistema: <pre>-Daws.crt.log.level=Trace <br />-Daws.crt.log.destination=Stdout</pre>  |  A livello di codice: <pre>import software.amazon.awssdk.crt.Log;<br /><br />// Execute this statement before constructing the SDK service client.<br />Log.initLoggingToStdout(Log.LogLevel.Trace);</pre>  | 

Per motivi di sicurezza, a livello «Trace» i client HTTP AWS basati su CRT registrano solo le intestazioni di risposta. Le intestazioni delle richieste, i corpi delle richieste e i corpi delle risposte non vengono registrati.

------