翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ロギング
は、SLF4JLoggerProvider
のデフォルトとして AWS SDK for Kotlin 設定します。抽象化レイヤーである SLF4J では、実行時に複数のログ記録システムのいずれかを使用できます。サポートされているログ記録システムには、Java ログ記録 APIs
警告
ワイヤログ記録はデバッグ目的にのみ使用することをお勧めします。(ワイヤログ記録については以下で説明します)。E メールアドレス、セキュリティトークン、API キー、パスワード、 AWS Secrets Manager シークレットなどの機密データをログに記録する可能性があるため、本番環境ではオフにします。HTTPS 呼び出しであっても、ワイヤログ記録は、暗号化なしでリクエストまたはレスポンス全体をログに記録します。
大規模なリクエスト (Amazon S3 へのファイルのアップロードなど) やレスポンスの場合、詳細なワイヤログ記録もアプリケーションのパフォーマンスに大きな影響を与える可能性があります。
SLF4J
互換のログライブラリを使用できますが、この例では Log4j 2 を使用して JVM プログラムで SDK からのログ出力を有効にします。
Gradle の依存関係
(X.Y.Z
リンクに移動して、利用可能な最新バージョンを確認できます)。
implementation("org.apache.logging.log4j:log4j-slf4j2-impl:
X.Y.Z
")
Log4j 2 設定ファイル
resources
ディレクトリlog4j2.xml
に という名前のファイルを作成します (例: <project-dir>/src/main/resources
)。次の XML 設定を ファイルに追加します。
<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>
この設定には、MDC (マッピングされた診断コンテキスト) ログ記録を有効にする pattern
属性の%X
指定子が含まれます。
SDK は、オペレーションごとに次の MDC 要素を追加します。
- RPC
-
呼び出した RPC の名前。例:
S3.GetObject
。 - sdkInvocationId
-
オペレーションのためにサービスクライアントによって割り当てられた一意の ID。ID は、1 回のオペレーションの呼び出しに関連するすべてのログイベントを関連付けます。
ワイヤレベルメッセージのログモードを指定する
デフォルトでは、 AWS SDK for Kotlin はワイヤレベルのメッセージをログに記録しません。これは、API リクエストとレスポンスからの機密データが含まれている可能性があるためです。ただし、デバッグの目的でこのレベルの詳細が必要になる場合があります。
Kotlin SDK を使用すると、コードでログモードを設定するか、環境設定を使用して、次のデバッグメッセージングを有効にできます。
-
HTTP リクエスト
-
HTTP レスポンス
ログモードは、各ビットがフラグ (モード) で値が加算されるビットフィールドによってバックアップされます。1 つのリクエストモードと 1 つのレスポンスモードを組み合わせることができます。
コードでログモードを設定する
追加のログ記録をオプトインするには、サービスクライアントを構築するときに logMode
プロパティを設定します。
次の例は、リクエスト (本文あり) とレスポンス (本文なし) のログ記録を有効にする方法を示しています。
import aws.smithy.kotlin.runtime.client.LogMode
// ...
val client = DynamoDbClient {
// ...
logMode = LogMode.LogRequestWithBody + LogMode.LogResponse
}
サービスクライアントの構築中に設定されたログモード値は、環境から設定されたログモード値を上書きします。
環境からログモードを設定する
コードで明示的に設定されていないすべてのサービスクライアントに対してログモードをグローバルに設定するには、次のいずれかを使用します。
-
JVM システムプロパティ:
sdk.logMode
-
環境変数:
SDK_LOG_MODE
以下の大文字と小文字を区別しない値を使用できます。
-
LogRequest
-
LogRequestWithBody
-
LogResponse
-
LogResponseWithBody
環境の設定を使用して結合ログモードを作成するには、値をパイプ (|
) 記号で区切ります。
例えば、次の例では、前の例と同じログモードを設定します。
# Environment variable.
export SDK_LOG_MODE=LogRequestWithBody|LogResponse
# JVM system property.
java -Dsdk.logMode=LogRequestWithBody|LogResponse ...
注記
また、互換性のある SLF4J ロガーを設定し、ワイヤレベルのログ記録を有効にするには、ログ記録レベルを DEBUG に設定する必要があります。