Rapid SDK for Java のロギング
Rapid SDK for Java はクライアントにロギングフレームワークを適用せず、代わりに SLF4J インターフェースを介してロギングをサポートします。SLF4J はさまざまなロギングフレームワークの抽象化に対応しているため、プロジェクトを構築する際に必要な実装をクライアントでプラグインできます。
ロギングフレームワークがプラグインされていないと、SDK (SLF4J) はデフォルトでノーオペレーションになり、警告メッセージが 1 つだけ表示されてすべてのログリクエストが破棄されます。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".\
SLF4J: Defaulting to no-operation (NOP) logger implementation\
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
プロジェクトの依存関係の宣言
クライアントでは、プロジェクトの依存関係として宣言することで、特定のロギングフレームワークをプラグインできます。設計上、SLF4J では一度に 1 つのフレームワークしか使用できず、複数のフレームワークが見つかった場合は警告メッセージが出力されます。
Simple Logger
Java Util Logging
Logback
Log4j2
ログフォーマット
ロギングフレームワークは、カスタムのログのフォーマットとレイアウトをサポートします。ロギングイベントの発信元でタイムスタンプやロガー名などの詳細を含めると、SDK のトラブルシューティングに役立ちます。さらに、ログメッセージには、除外される可能性がある対象に対してプレフィックス (ExpediaGroupSDK
) が付けられます。
13:36:59.287 [DefaultDispatcher-worker-1] INFO c.e.s.c.c.c.ConfigurationCollector MDC= - ExpediaSDK: Successfully loaded [endpoint] from [runtime configuration]
ログレベル
SDK で送受信されるリクエストデータとレスポンスデータを追跡したい場合は、ログレベルを INFO に設定します。これにより、ヘッダーと本文の内容も含めてログに記録されますが、大量のログデータが生成される可能性があります。ログ レベルを WARN か ERROR に設定すると、例外とエラーのみがログに記録されます。この場合でも、予期しない動作が発生した場合に Expedia Group と共有できるトランザクション ID が含まれます。
問題のトラブルシューティングを行う場合は、ログ レベルを DEBUG に設定してリクエストとレスポンスに関するより詳細な情報を取得できます。DEBUG レベルのログには、OkHttp クライアントイベントとトランザクション ID のより詳細なログが含まれます。
DEBUG レベルでのログメッセージの例 :
17:40:08.490 [DefaultDispatcher-worker-3] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Call start for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
17:40:08.496 [OkHttp https://test.ean.com/...] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Connect start for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
17:40:08.508 [OkHttp https://test.ean.com/...] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Connect end for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
17:40:08.508 [OkHttp https://test.ean.com/...] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Connection acquired for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
17:40:08.510 [OkHttp https://test.ean.com/...] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Sending request headers start for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
17:40:08.510 [OkHttp https://test.ean.com/...] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Sending request headers end for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
トレーサビリティ
SDK では API 呼び出しごとに一意の transaction ID
が生成されます。これは、リクエストをエンドツーエンドでトレースすることで問題のトラブルシューティングを行うのに役立ちます。トランザクション ID はリクエストヘッダーとレスポンスヘッダーに追加され、例外が発生した場合にはエラーメッセージに記録されます。