

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SDK for Java 2.x でのログ記録
<a name="logging-slf4j"></a>

は [SLF4J](https://www.slf4j.org/manual.html) AWS SDK for Java 2.x を使用します。これは、実行時に複数のロギングシステムのいずれかを使用できるようにする抽象化レイヤーです。

サポートされるログ記録システムには、Java ログ記録 フレームワークおよび Apache[ Log4j 2](https://logging.apache.org/log4j/2.x/) などがあります。このトピックでは、SDK を使用するためのログ記録システムとして Log4j 2 を使用する方法について説明します。

## Log4j 2 設定ファイル
<a name="log4j-configuration-file"></a>

通常は `log4j2.xml` Log4j 2 という名前の設定ファイルを使用します。設定ファイルの例を次に示します。この設定ファイルで使用する値の詳細については、「[Log4j 設定のマニュアル](https://logging.apache.org/log4j/2.x/manual/configuration.html)」を参照してください。

`log4j2.xml` ファイルは、アプリケーションの起動時にクラスパス上にある必要があります。Maven プロジェクトの場合は、ファイルを `<project-dir>/src/main/resources` ディレクトリに置きます。

`log4j2.xml` 設定ファイルは、[ログ記録レベル](https://logging.apache.org/log4j/2.x/manual/configuration.html#Loggers)、ログ記録出力の送信先 ([ファイルまたはコンソールなど](https://logging.apache.org/log4j/2.x/manual/appenders.html))、[出力フォーマット](https://logging.apache.org/log4j/2.x/manual/layouts.html)などのプロパティを指定します。ログ記録レベルは Log4j 2 が出力する詳細レベルを指定します。Log4j 2 では、複数のログ記録[https://logging.apache.org/log4j/2.x/manual/architecture.html#](https://logging.apache.org/log4j/2.x/manual/architecture.html#)の概念をサポートしています。ログ記録レベルは、階層ごとに個別に設定されます。で使用する主なログ記録階層は AWS SDK for Java 2.x です`software.amazon.awssdk`。

## ログ記録を追加する
<a name="sdk-java-logging-classpath"></a>

構築ファイルで SLF4J の Log4j 2 バインディングを設定するには、以下を使用します。

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

次の要素を `pom.xml` ファイルに追加します。

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

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

次のコードを `build.gradle.kts` ファイルに追加します。

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

------

`log4j-slf4j2-impl` アーティファクトの最小バージョンには `2.20.0` を使用します。最新バージョンには、[Maven Central](https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-slf4j2-impl) に公開されているバージョンを使用します。*VERSION* は、使用するバージョンに置き換えます。

## SDK 固有のエラーおよび警告
<a name="sdk-java-logging-service"></a>

SDK のクライアントライブラリからの重要なメッセージを取得するために、「software.amazon.awssdk」ロガー階層は必ず「WARN」に設定しておくことをお勧めします。例えば、アプリケーションで `InputStream` が正しく閉じられなかったためにリソースが漏洩する可能性があると Amazon S3 クライアントが検出した場合、S3 クライアントは警告メッセージを使用してログに報告します。これにより、リクエストやレスポンスの処理でクライアントに問題が発生した場合、メッセージが必ずログに記録されます。

以下の `log4j2.xml` ファイルでは、`rootLogger` を「WARN」に設定しています。これにより、「software.amazon.awssdk」階層内のロガーを*含め*、アプリケーション内のすべてのロガーからの警告およびエラーレベルのメッセージが出力されます。また、`<Root level="ERROR">` が使用されている場合、明示的に「software.amazon.awssdk」ロガー階層を「WARN」に設定することもできます。

**Log4j2.xml 設定ファイルの例**

この設定では、すべてのロガー階層の「ERROR」レベルと「WARN」レベルのメッセージがコンソールにログ記録されます。

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

## リクエスト/応答の概要のログ記録
<a name="sdk-java-logging-request-response"></a>

へのすべてのリクエストは、 AWS のサービス が AWS リクエストを処理する方法に問題がある場合に便利な一意のリクエスト ID AWS のサービス を生成します。 AWS リクエスト IDs「software.amazon.awssdk.request」ロガーの「DEBUG」ログレベルを介して報告することもできます。 [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())

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

ログ出力の例を次に示します。

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

リクエスト ID だけに興味がある場合は `<Logger name="software.amazon.awssdk.requestId" level="DEBUG" />` を使用します。

## デバッグレベルの SDK ログ記録
<a name="sdk-debug-level-logging"></a>

SDK の動作をより詳細に知る必要がある場合は、`software.amazon.awssdk` ロガーのログレベルを `DEBUG` に設定できます。このレベルでは、SDK は大量の詳細を出力するため、統合テストを使用してエラーを解消する際にこのレベルを設定することをお勧めします。

このログ記録レベルでは、SDK は設定、認証情報解決、実行インターセプター、高レベルの TLS アクティビティ、リクエスト署名などに関する情報をログに記録します。

以下は、 `S3Client#listBuckets()` 呼び出しに対して SDK によって`DEBUG` レベルで出力されるステートメントの例です。

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

次の `log4j2.xml` ファイルは、前の出力を設定します。

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

## ワイヤログの有効化
<a name="sdk-java-logging-verbose"></a>

SDK for Java 2.x によって送受信された詳細なリクエストおよびレスポンスの表示は役に立つ場合があります。この情報にアクセスする必要がある場合は、サービスクライアントが使用する HTTP クライアントに応じて必要な設定を追加することで、一時的に有効にできます。

デフォルトでは、[S3Client](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Client.html) などの同期サービスクライアントは基盤となる Apache HttpClient を使用し、[S3AsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html) などの非同期サービスクライアントは Netty のノンブロッキング HTTP クライアントを使用します。

2 つのカテゴリーのサービスクライアントに使用できる HTTP クライアントの内訳は以下のとおりです。


| 同期 HTTP クライアント | 非同期 HTTP クライアント | 
| --- | --- | 
| [ApacheHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html) (デフォルト) | [NettyNioAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html) (デフォルト) | 
| [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) |  | 
| [Apache5HttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.html)  | 

基盤となる HTTP クライアントに応じて追加が必要な設定については、以下の該当するタブを参照してください。

**警告**  
ワイヤログファイルはデバッグの目的でのみ使用することをお勧めします。この機能を使用して機密データを記録することができるため、本稼働環境ではこの機能を無効にします。HTTPS 呼び出しの場合でも、リクエストやレスポンスは暗号化せずに記録されます。大規模なリクエスト (ファイルのアップロード先など Amazon S3) やレスポンスの場合、詳細なワイヤログ記録もアプリケーションのパフォーマンスに大きな影響を与える可能性があります。

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

「org.apache.http.wire」ロガーを `log4j2.xml` 設定ファイルに追加し、レベルを「DEBUG」に設定します。

以下の `log4j2.xml` ファイルでは、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>
```

Apache では内部で 1.2 を使用しているため、Apache でのワイヤログ記録には `log4j-1.2-api` アーティファクトへの Maven 依存関係がさらに必要です。

Apache HTTP クライアントのワイヤログ記録を含む log4j 2 の Maven 依存関係のすべてのセットは、以下の構築ファイルスニペットに示されています。

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

**Gradle—Kotlin DSL**

```
...
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")
}
...
```

`2.20.0` アーティファクトの最小バージョンには `log4j-bom` を使用します。最新バージョンには、[Maven Central](https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-bom) に公開されているバージョンを使用します。*VERSION* は、使用するバージョンに置き換えます。

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

`log4j2.xml` 「org.apache.hc.client5.http.wire」ロガーを設定ファイルに追加し、レベルを「DEBUG」に設定します。

次の`log4j2.xml`ファイルは、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 ]

`UrlConnectionHttpClient` を使用するサービスクライアントの詳細をログ記録するには、まず以下の内容の `logging.properties` ファイルを作成します。

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

以下の JVM システムプロパティに `logging.properties` のフルパスを設定します。

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

この設定では、リクエストとレスポンスのヘッダーのみがログに記録されます。以下に例を示します。

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

リクエスト/レスポンスの本文を表示するには、JVM プロパティに `-Djavax.net.debug=all` を追加します。この追加プロパティは、すべての SSL 情報を含む大量の情報をログ記録します。

ログコンソールまたはログファイル内で、`"GET"` または `"POST"` を検索すると、実際のリクエストとレスポンスを含むログのセクションにすばやく移動できます。リクエストに `"Plaintext before ENCRYPTION"` を、レスポンスに `"Plaintext after DECRYPTION"` を検索すると、ヘッダーと本文の全文が表示されます。

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

非同期サービスクライアントがデフォルト `NettyNioAsyncHttpClient` を使用している場合は、HTTP ヘッダーとリクエスト/レスポンスの本文をログ記録するロガーを `log4j2.xml` ファイルに 2 つ追加します。

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

以下はすべての `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>
```

これらの設定は、すべてのヘッダー詳細とリクエスト/レスポンス本文をログ記録します。

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

 AWS CRT ベースの HTTP クライアントのインスタンスを使用するようにサービスクライアントを設定している場合は、JVM システムプロパティを設定するか、プログラムで詳細をログ記録できます。


|  | 
| --- |
|  Log to a file at "Debug" level  | 
|  システムプロパティの使用: <pre>-Daws.crt.log.level=Trace <br />-Daws.crt.log.destination=File <br />-Daws.crt.log.filename=<path to file></pre>  |  プログラムによる: <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  | 
|  システムプロパティの使用: <pre>-Daws.crt.log.level=Trace <br />-Daws.crt.log.destination=Stdout</pre>  |  プログラムによる: <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>  | 

セキュリティ上の理由から、「トレース」レベルで AWS は、CRT ベースの HTTP クライアントはレスポンスヘッダーのみをログに記録します。リクエストヘッダー、リクエストボディ、レスポンスボディはログ記録されません。

------