7.3.2. マップされた診断コンテキストの追加
ほとんどの Debezium コネクター(および Kafka Connect ワーカー)は複数のスレッドを使用して異なるアクティビティーを実行します。これにより、ログファイルを表示し、特定の論理アクティビティーのログメッセージのみを見つけることが困難になる可能性があります。ログメッセージの検索を容易にするため、Debezium は各スレッドの追加情報を提供する マッピングされた診断コンテキスト (MDC)を複数提供します。
Debezium は、以下の MDC プロパティーを提供します。
dbz.connectorType
-
コネクタータイプの短いエイリアス。たとえば、、
MySql
Mongo
Postgres
、などがあります。同じ タイプ のコネクターに関連付けられたすべてのスレッドは同じ値を使用するため、これを使用して特定のタイプのコネクターによって生成されたすべてのログメッセージを見つけることができます。 dbz.connectorName
-
コネクターの設定に定義されたコネクターまたはデータベースサーバーの名前。たとえば
products
、serverA
、などです。特定の コネクターインスタンスに関連付けられたすべてのスレッドは同じ値を使用する ため、特定のコネクターインスタンスによって生成されたすべてのログメッセージを確認できます。 dbz.connectorContext
-
コネクターのタスク内で実行される個別のスレッドとして実行されるアクティビティーの省略名。たとえば、、
main
binlog
snapshot
、などがあります。コネクターがテーブルやコレクションなど、特定のリソースにスレッドを割り当てると、代わりにそのリソースの名前を使用できます。コネクターに関連付けられた各スレッドは個別の値を使用するため、この特定のアクティビティーに関連するログメッセージをすべて見つけることができます。
コネクターの MDC を有効にするには、log4j.properties
ファイルにアペンダーを設定します。
手順
-
log4j.properties
ファイルを開きます。 サポートされる Debezium MDC プロパティーのいずれかを使用するようにアペンダーを設定します。
以下の例では、以下の MDC プロパティーを使用するよう
stdout
アペンダーが設定されています。log4j.properties
... log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %X{dbz.connectorType}|%X{dbz.connectorName}|%X{dbz.connectorContext} %m [%c]%n ...
これにより、以下のようなログメッセージが生成されます。
... 2017-02-07 20:49:37,692 INFO MySQL|dbserver1|snapshot Starting snapshot for jdbc:mysql://mysql:3306/?useInformationSchema=true&nullCatalogMeansCurrent=false&useSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull with user 'debezium' [io.debezium.connector.mysql.SnapshotReader] 2017-02-07 20:49:37,696 INFO MySQL|dbserver1|snapshot Snapshot is using user 'debezium' with these MySQL grants: [io.debezium.connector.mysql.SnapshotReader] 2017-02-07 20:49:37,697 INFO MySQL|dbserver1|snapshot GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'debezium'@'%' [io.debezium.connector.mysql.SnapshotReader] ...
ログの各行には、コネクタータイプ(例:
MySQL
)、コネクターの名前(例:dbserver1
)、およびスレッドのアクティビティー(例:snapshot
)が含まれます。