ロギング

Expedia Group 旅行プラットフォーム SDK で使用状況とエラーを追跡する


Information

注意

Expedia Group では Fraud Prevention Service Java SDK の名称変更を実施しました。このページでは、名称変更後の SDK を記載しています。更新方法


Java によるロギング

Expedia Group Fraud Prevention Service SDK for Java はクライアントにロギングフレームワークを適用せず、代わりに SLF4J インターフェースを介してロギングをサポートします。SLF4J はさまざまなロギングフレームワークの抽象化に対応しているため、プロジェクトを構築する際に必要な実装をクライアントでプラグインできます。

ロギングフレームワークがプラグインされていないと、SDK (SLF4J) はデフォルトでノーオペレーションになり、警告メッセージが 1 つだけ表示されてすべてのログリクエストが破棄されます。

プロジェクトの依存関係の宣言

プロジェクトの依存関係として宣言することで、特定のロギングフレームワークをプラグインできます。設計上、SLF4J では一度に 1 つのフレームワークしか使用できず、複数のフレームワークが見つかった場合は警告メッセージが出力されます。

Simple Logger

<dependency>
    <groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
    <!-- version -->
</dependency>
dependencies {
  implementation group: 'org.slf4j', name: 'slf4j-simple'
}

Java util logging

<dependency> 
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-jdk14</artifactId>
  <!-- version -->
</dependency>
dependencies {
  implementation group: org.apache.logging.log4j, name: 'log4j-api'
}

Logback

<dependency> 
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <!-- version -->
</dependency>
dependencies {
  implementation group: 'ch.qos.logback', name: 'logback-classic'
}

ログフォーマット

ロギングフレームワークは、カスタムのログのフォーマットとレイアウトをサポートします。ロギングイベントの発信元でタイムスタンプやロガー名などの詳細を含めると、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]

Python によるロギング

Expedia Group プラットフォーム SDK for Python では、Python の標準ライブラリに存在するロギングモジュール を使用しており、INFO をログのデフォルトレベルとして使用しています。

ロガーの命名規則

ロガー expediagroup は SDK のルートロガーで、SDK で使用される他のすべてのロガーの親となり、標準フォーマット expediagroup.sdk.core.<package>.<module> に従います。そのため、クライアントは思いのままにロギングを構成できます。

ロギング構成

デフォルトでは、ロギング構成は SDK によって処理されます (設定なしで、無料でログを取得可能)。 デフォルトの動作を上書きする場合は、Python Org とコミュニティが指定するフォーマットと標準に従って構成ファイルを設定する必要があります。

file.cfg

[loggers]
keys=root,expediagroup

[logger_root]
handlers=

[logger_expediagroup]
qualname=expediagroup
level=INFO
handlers=exampleHandler

[handlers]
keys=exampleHandler

[formatters]
keys=exampleFormatter

[formatter_exampleFormatter]
format=[%(asctime)s] %(name)s %(levelname)s: %(message)s
datefmt=%Y-%m-%d %H:%M:%S

[handler_exampleHandler]
class=StreamHandler
level=INFO
formatter=exampleFormatter

構成ファイルを使用する

from logging.config import fileConfig


fileConfig("file.cfg")

ログフォーマット

ロギングフレームワークは、カスタムのログのフォーマットとレイアウトをサポートします。ロギングイベントの発信元でタイムスタンプやロガー名などの詳細を含めると、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]

Node.js によるロギング

Expedia Group プラットフォーム SDK for Node.js には、デフォルトロガーとして ExpediaGroupLogger が組み込まれています。ExpediaGroupLogger はデフォルトで有効になっており、infowarnerrorの 3 つのログレベルをサポートしています。ExpediaGroupLoggersetLoggingLevel を呼び出すことでアプリケーションのロギングレベルを設定できます。ログメッセージは console に書き込まれ、除外される可能性がある対象に対してプレフィックス (ExpediaGroupSDK) が付けられます。

SDK を使用すると、デフォルトロガーをオーバーライドできます。この目的のために、setLogger に使用できる LoggerProvider を SDK にエクスポートします。カスタムロガーでは infowarnerror の 3 つのメソッドを実装する必要があります。

ログフォーマット

ロギングフレームワークは、カスタムのログのフォーマットとレイアウトをサポートします。ロギングイベントの発信元でタイムスタンプやロガー名などの詳細を含めると、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 では API 呼び出しごとに一意の transaction ID が生成されます。これは、リクエストをエンドツーエンドでトレースすることで問題のトラブルシューティングを行うのに役立ちます。トランザクション ID はリクエストヘッダーとレスポンスヘッダーに追加され、DEBUG レベルでログに記録されます。

このページは役に立ちましたか ?
このコンテンツに改善が必要な点があれば、
サービス向上にご協力いただきありがとうございます。