AWS SDK for Java 1.x は 2024 年 7 月 31 日にメンテナンスモードに移行し、2025 年 12 月 31 end-of-support
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SDK for Java 通話のログ記録
AWS SDK for Java は、実行時に複数のログシステムのいずれかを使用できるようにする抽象化レイヤーである Apache Commons Logging
サポートされるログ記録システムには、Java ロギング フレームワークや Apache Log4j などがあります。このトピックでは Log4j の使用方法を示します。アプリケーションコードを変更せずに、 SDKのログ記録機能を使用できます。
Log4j
注記
このトピックでは、Log4j 1.x について説明します。Log4j2 は Apache Commons のログ記録を直接サポートしませんが、Apache Commons ログ記録インターフェイスを使用して Log4j2 にログ記録呼び出しを自動的にダイレクトするアダプターを提供します。詳細については、Log4j2 のドキュメントの「Commons Logging Bridge
Log4J をダウンロードする JAR
で Log4j を使用するにはSDK、Apache ウェブサイトJARから Log4j をダウンロードする必要があります。SDK には は含まれませんJAR。クラスパス上の場所にJARファイルをコピーします。
Log4j では、設定ファイル log4j.properties を使用します。設定ファイルの例を次に示します。クラスパス上のディレクトリに、この設定ファイルをコピーします。Log4j JARと log4j.properties ファイルは、同じディレクトリに存在する必要はありません。
log4j.properties 設定ファイルは、ログ記録レベル
-
log4j.logger.com.amazonaws
-
log4j.logger.org.apache.http.wire
クラスパスの設定
Log4j JARと log4j.properties ファイルの両方がクラスパスにある必要があります。Apache Antpath
要素でクラスパスを設定します。次の例は、 に含まれる例
<path id="aws.java.sdk.classpath"> <fileset dir="../../third-party" includes="**/*.jar"/> <fileset dir="../../lib" includes="**/*.jar"/> <pathelement location="."/> </path>
Eclipse を使用している場合はIDE、メニューを開き、プロジェクト | プロパティ | Java ビルドパス に移動することで、クラスパスを設定できます。
サービス固有のエラーと警告
クライアントライブラリから重要なメッセージをキャッチWARNするには、常に「com.amazonaws」ロガー階層を「」に設定しておくことをお勧めします。例えば、アプリケーションが を適切に閉じておらず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
リクエストおよびレスポンスの概要のログ記録
へのすべてのリクエストは、 AWS サービス が AWS リクエストをどのように処理しているかという問題が発生した場合に便利な一意のリクエスト ID AWS サービス を生成します。 AWS リクエストIDsは、失敗したサービス呼び出しSDKに対して の例外オブジェクトを介してプログラムでアクセスでき、「com.amazonaws.request」ロガーのDEBUGログレベルを通じて報告することもできます。
次の log4j.properties ファイルでは、リクエスト を含む AWS リクエストとレスポンスの概要が有効になりますIDs。
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
詳細なワイヤログ記録
場合によっては、 が 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
レイテンシーメトリクスのログ記録
トラブルシューティングを行っていて、処理に最も時間がかかっているプロセスを示すメトリクスや、サーバー側またはクライアント側のどちらに大きなレイテンシーが発生しているかを示すメトリクスなどを確認する場合、レイテンシーロガーが役立ちます。com.amazonaws.latency
ロガーを に設定DEBUGして、このロガーを有効にします。
注記
このロガーは、SDKメトリクスが有効になっている場合にのみ使用できます。SDK メトリクスパッケージの詳細については、「 のメトリクスの有効化 AWS SDK for Java」を参照してください。
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]