

 AWS SDK for Java 1.x は 2025 年 12 月 31 日にend-of-supportしました。新しい機能、可用性の向上、セキュリティ更新のために、[AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) に移行することをお勧めします。

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

# AWS SDK for Java 通話のログ記録
<a name="java-dg-logging"></a>

 AWS SDK for Java には [Apache Commons Logging](http://commons.apache.org/proper/commons-logging/guide.html) が実装されています。これは、実行時に複数のロギングシステムのいずれかを使用できるようにする抽象化レイヤーです。

サポートされるログ記録システムには、Java ロギング フレームワークや Apache Log4j などがあります。このトピックでは Log4j の使用方法を示します。SDK のログ記録機能は、アプリケーションコードを変更せずに使用できます。

[Log4j](http://logging.apache.org/log4j/2.x/) の詳細については、[Apache ウェブサイト](http://www.apache.org/)を参照してください。

**注記**  
このトピックでは、Log4j 1.x について説明します。Log4j2 は Apache Commons のログ記録を直接サポートしませんが、Apache Commons ログ記録インターフェイスを使用して Log4j2 にログ記録呼び出しを自動的にダイレクトするアダプターを提供します。詳細については、Log4j2 のドキュメントの「[Commons Logging Bridge](https://logging.apache.org/log4j/2.x/log4j-jcl.html)」を参照してください。

## Log4J JAR のダウンロード
<a name="download-the-log4j-jar"></a>

SDK で Log4j を使用するには、Apache ウェブサイトで Log4j JAR をダウンロードする必要があります。SDK に JAR は含まれていません。クラスパス上の場所に JAR ファイルをコピーします。

Log4j では、設定ファイル log4j.properties を使用します。設定ファイルの例を次に示します。クラスパス上のディレクトリに、この設定ファイルをコピーします。Log4j JAR と log4j.properties ファイルは、同じディレクトリに配置しないでください。

log4j.properties 設定ファイルは、[ログ記録レベル](http://logging.apache.org/log4j/2.x/manual/configuration.html#Loggers)、ログ記録出力の送信先 (たとえば[ファイルやコンソール](http://logging.apache.org/log4j/2.x/manual/appenders.html))、[出力形式](http://logging.apache.org/log4j/2.x/manual/layouts.html)などのプロパティを指定します。ログ記録レベルは、ロガーによって生成される出力の詳細度です。Log4j では、複数のログ記録*階層*の概念をサポートしています。ログ記録レベルは、階層ごとに個別に設定されます。次の 2 つのログ記録階層が AWS SDK for Javaで使用できます。
+ log4j.logger.com.amazonaws
+ log4j.logger.org.apache.http.wire

## クラスパスの設定
<a name="sdk-net-logging-classpath"></a>

Log4j JAR および log4j.properties ファイルは、クラスパス上に配置する必要があります。[Apache Ant](http://ant.apache.org/manual/) を使用している場合は、Ant ファイルの `path` 要素でクラスパスを設定します。以下の例では、SDK に含まれている Amazon S3 [サンプル](https://github.com/aws/aws-sdk-java/blob/master/src/samples/AmazonS3/build.xml)用の Ant ファイルにある path 要素を示します。

```
<path id="aws.java.sdk.classpath">
  <fileset dir="../../third-party" includes="**/*.jar"/>
  <fileset dir="../../lib" includes="**/*.jar"/>
  <pathelement location="."/>
</path>
```

Eclipse IDE を使用している場合は、メニューを開き、[**Project (プロジェクト)**] \$1 [**Properties (プロパティ)**] \$1 [**Java Build Path**] に移動して、クラスパスを設定します。

## サービス固有のエラーと警告
<a name="sdk-net-logging-service"></a>

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

次の log4j.properties ファイルでは、`rootLogger` が WARN に設定されています。これにより、"com.amazonaws" 階層のすべてのロガーで生成された警告とエラーメッセージが取り込まれます。また、com.amazonaws ロガーを WARN に明示的に設定することもできます。

```
log4j.rootLogger=WARN, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c -  %m%n
# Or you can explicitly enable WARN and ERROR messages for the {AWS} Java clients
log4j.logger.com.amazonaws=WARN
```

## リクエストおよびレスポンスの概要のログ記録
<a name="sdk-net-logging-request-response"></a>

へのすべてのリクエストは一意の AWS リクエスト ID AWS のサービス を生成します。これは、 AWS のサービス がリクエストを処理する方法に問題がある場合に便利です。 AWS リクエスト IDsは、失敗したサービス呼び出しに対して SDK の例外オブジェクトを介してプログラムでアクセスでき、「com.amazonaws.request」ロガーの DEBUG ログレベルを介して報告することもできます。

次の log4j.properties ファイルは、リクエスト IDs を含む AWS リクエストとレスポンスの概要を有効にします。

```
log4j.rootLogger=WARN, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c -  %m%n
# Turn on DEBUG logging in com.amazonaws.request to log
# a summary of requests/responses with {AWS} request IDs
log4j.logger.com.amazonaws.request=DEBUG
```

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

```
2009-12-17 09:53:04,269 [main] DEBUG com.amazonaws.request - Sending
Request: POST https://rds.amazonaws.com / Parameters: (MaxRecords: 20,
Action: DescribeEngineDefaultParameters, SignatureMethod: HmacSHA256,
AWSAccessKeyId: ACCESSKEYID, Version: 2009-10-16, SignatureVersion: 2,
Engine: mysql5.1, Timestamp: 2009-12-17T17:53:04.267Z, Signature:
q963XH63Lcovl5Rr71APlzlye99rmWwT9DfuQaNznkD, ) 2009-12-17 09:53:04,464
[main] DEBUG com.amazonaws.request - Received successful response: 200, {AWS}
Request ID: 694d1242-cee0-c85e-f31f-5dab1ea18bc6 2009-12-17 09:53:04,469
[main] DEBUG com.amazonaws.request - Sending Request: POST
https://rds.amazonaws.com / Parameters: (ResetAllParameters: true, Action:
ResetDBParameterGroup, SignatureMethod: HmacSHA256, DBParameterGroupName:
java-integ-test-param-group-0000000000000, AWSAccessKeyId: ACCESSKEYID,
Version: 2009-10-16, SignatureVersion: 2, Timestamp:
2009-12-17T17:53:04.467Z, Signature:
9WcgfPwTobvLVcpyhbrdN7P7l3uH0oviYQ4yZ+TQjsQ=, )

2009-12-17 09:53:04,646 [main] DEBUG com.amazonaws.request - Received
successful response: 200, {AWS} Request ID:
694d1242-cee0-c85e-f31f-5dab1ea18bc6
```

## 詳細なワイヤログ記録
<a name="sdk-net-logging-verbose"></a>

場合によっては、 が AWS SDK for Java 送受信する正確なリクエストとレスポンスを確認すると便利です。大規模なリクエスト (アップロード先のファイルなど Amazon S3) やレスポンスを書き出すと、アプリケーションが大幅に遅くなる可能性があるため、本番システムでこのログ記録を有効にしないでください。この情報にアクセスする必要がある場合は、Apache HttpClient 4 ロガーを使用して、一時的に有効にすることができます。`org.apache.http.wire` ロガーの DEBUG レベルを有効にすると、すべてのリクエストデータとレスポンスデータに対するログ記録が有効になります。

次の log4j.properties ファイルでは、Apache HttpClient 4 で完全なワイヤログ記録が有効になっていますが、アプリケーションのパフォーマンスに重大な影響が及ぶため、一時的にのみ有効にする必要があります。

```
log4j.rootLogger=WARN, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c -  %m%n
# Log all HTTP content (headers, parameters, content, etc)  for
# all requests and responses. Use caution with this since it can
# be very expensive to log such verbose data!
log4j.logger.org.apache.http.wire=DEBUG
```

## レイテンシーメトリクスのログ記録
<a name="sdk-latency-logging"></a>

トラブルシューティングを行っていて、処理に最も時間がかかっているプロセスを示すメトリクスや、サーバー側またはクライアント側のどちらに大きなレイテンシーが発生しているかを示すメトリクスなどを確認する場合、レイテンシーロガーが役立ちます。このロガーを有効にするには、`com.amazonaws.latency` ロガーを DEBUG に設定します。

**注記**  
このロガーは、SDK メトリクスが有効な場合のにみ使用できます。SDK メトリクスパッケージの詳細については、「[Enabling Metrics for the AWS SDK for Java](generating-sdk-metrics.md)」を参照してください。

```
log4j.rootLogger=WARN, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c -  %m%n
log4j.logger.com.amazonaws.latency=DEBUG
```

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

```
com.amazonaws.latency - ServiceName=[{S3}], StatusCode=[200],
ServiceEndpoint=[https://list-objects-integ-test-test.s3.amazonaws.com],
RequestType=[ListObjectsV2Request], AWSRequestID=[REQUESTID], HttpClientPoolPendingCount=0,
RetryCapacityConsumed=0, HttpClientPoolAvailableCount=0, RequestCount=1,
HttpClientPoolLeasedCount=0, ResponseProcessingTime=[52.154], ClientExecuteTime=[487.041],
HttpClientSendRequestTime=[192.931], HttpRequestTime=[431.652], RequestSigningTime=[0.357],
CredentialsRequestTime=[0.011, 0.001], HttpClientReceiveResponseTime=[146.272]
```