Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Kotlin Sync ドライバー
/

ドライバー イベントのログ

このガイドでは、 Kotlin Syncドライバーでロガーを設定および構成する方法を学習できます。

このガイドでは、ドライバーでイベントをレコード方法について説明しています。コード内でドライバーのアクティビティに関する情報を使用する方法については、アプリケーション イベントの監視 のガイドを参照してください。

Kotlin Syncドライバーは、Simple Logging Facade For Java (SLF4J)を使用して、選択したロギングフレームワークを指定できます。SLF4J の詳細については、SLF4J のドキュメントを参照してください。

ロガーの設定はオプションです。ロガーを設定するには、プロジェクトに以下を含める必要があります。

  • クラスパス内の slf4j-api アーティファクト

  • ロギング フレームワーク

  • slf4j-api アーティファクトをロギングフレームワークに接続するバインディング

ドライバーがクラスパス内で slf4j-api アーティファクトを見つけられない場合、ドライバーは次の警告を出力し、それ以降のすべてのログ記録を無効にします。

WARNING: SLF4J not found on the classpath. Logging is disabled for the 'org.mongodb.driver' component

次の例は、ロガーを設定する方法を示しています。対応する構文を確認するには、Logback タブまたは Log4j2タブを選択します。

プロジェクトの依存関係管理ツールを使用して Logback を設定する方法については、Maven タブまたは Gradleタブを選択してください。

次の依存関係を pom.xml ファイルに追加します。

<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
</dependencies>

次の依存関係を build.gradle ファイルに追加します。

dependencies {
implementation 'ch.qos.logback:logback-classic:1.2.11'
}

前述の依存関係を追加したら、MongoDB インスタンスに接続し、次のコードでドキュメントを取得します。

val mongoClient = MongoClient.create(<connection uri>);
val database = mongoClient.getDatabase(<database>);
val collection = database.getCollection<Document>(<collection>);
collection.find().first();

上記のコードでは、次のようなメッセージが出力されます。

...
12:14:55.833 [main] DEBUG org.mongodb.driver.connection - Checkout started for connection to <MongoDB hostname>
12:14:55.834 [main] DEBUG org.mongodb.driver.connection - Connection created: address=<MongoDB hostname>, driver-generated ID=3
12:14:55.836 [main] DEBUG org.mongodb.driver.connection - Connection ready: address=<MongoDB hostname>, driver-generated ID=3, established in=4 ms
12:14:55.843 [main] DEBUG org.mongodb.driver.connection - Connection checked out: address=<MongoDB hostname>, driver-generated ID=3, duration=9 ms

注意

デフォルトのログレベル

Logback のデフォルトのログレベルは DEBUG です。Logback ロガーのログレベルを変更する方法については、 このページの「ログ レベルの構成」セクション を参照してください。

プロジェクトの依存関係管理ツールで Log4j2 を設定する方法については、Maven タブまたは Gradleタブを選択してください。

次の依存関係を pom.xml ファイルに追加します。

<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.1</version>
</dependency>
</dependencies>

次の依存関係を build.gradle ファイルに追加します。

dependencies {
implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.17.1'
}

前述の依存関係を含めたら、次のコードを使用してエラーをログ。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
val logger = LoggerFactory.getLogger("MyApp");
logger.error("Logging an Error");

上記のコードでは、次のようなメッセージが出力されます。

12:35:00.438 [main] ERROR <my package path> - Logging an Error

注意

デフォルトのログレベル

Log4J2 のデフォルトのログレベルは ERROR です。つまり、 Kotlin Syncドライバーで標準操作を実行中、未構成の場合 Log4J2 からの出力は生成されません。Log4J2 ロガーのログレベルを変更する方法については、 このページのログ レベルの構成セクション を参照してください。

ロガーのログレベルは、SLF4J にバインドされたロギングフレームワークの構成システムを使用して構成できます。ログレベルは、ロガーがメッセージを出力するのに必要なメッセージの緊急度の下限を指定します。

次の例では、ログレベルを INFO に設定しています。対応する構文を確認するには、Logback タブまたは Log4j2タブを選択します。

logback.xml という名前のファイルに Logback 構成を指定します。クラスパスからこのファイルにアクセスできる必要があります。

Logbackフレームワークでは、最も緊急度の順に次のログレベルが定義されます。

  • ERROR

  • WARN

  • INFO

  • DEBUG

  • TRACE

logback.xmlファイルを次のように設定します。

<configuration>
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%-4relative [%thread] %-5level %logger{30} - %msg%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>

ロガーが正常に構成されたかテストするには、次のコードを実行します。

val mongoClient = MongoClient.create(<connection uri>);
val database = mongoClient.getDatabase(<database>);
val collection = database.getCollection<Document>(<collection>);
collection.find().first();

このコードでは、次のような出力が生成されます。

...
317 [main] INFO org.mongodb.driver.client - MongoClient with metadata {"driver": {"name": "<driver-name>", "version": "<driver-version>"}, "os": {"type": "<os-type>", "name": "<os-name>", "architecture": "<architecture>", "version": "<os-version>"}, "platform": "<platform-info>"} created with settings <MongoClientSettings>
345 [cluster-ClusterId{value='<cluster-id>', description='null'}-<MongoDB hostname>] INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=<MongoDB hostname>, type=<server-type>, cryptd=false, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=<max-wire-version>, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=<round-trip-nanos>, minRoundTripTimeNanos=<min-round-trip-nanos}

log4j2.xml という名前のファイルに Log4j2 の構成を指定します。クラスパスからこのファイルにアクセスできる必要があります。

Log4j2フレームワークでは、緊急度の順に次のログレベルが定義されます。

  • FATAL

  • ERROR

  • WARN

  • INFO

  • DEBUG

  • TRACE

  • ALL

log4j2.xmlファイルを次のように設定します。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

ロガーが正常に構成されたかテストするには、次のコードを実行します。

val mongoClient = MongoClient.create(<connection uri>);
val database = mongoClient.getDatabase(<database>);
val collection = database.getCollection<Document>(<collection>);
collection.find().first();

このコードでは、次のような出力が生成されます。

...
21:19:25.696 [main] INFO org.mongodb.driver.client - MongoClient with metadata {"driver": {"name": "<driver-name>", "version": "<driver-version>"}, "os": {"type": "<os-type>", "name": "<os-name>", "architecture": "<architecture>", "version": "<os-version>"}, "platform": "<platform-info>"} created with settings <MongoClientSettings>
21:19:25.710 [cluster-ClusterId{value='<cluster-id>', description='null'}-<MongoDB hostname>] INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=<MongoDB hostname>, type=<server-type>, cryptd=false, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=<max-wire-version>, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=<round-trip-nanos>, minRoundTripTimeNanos=<min-round-trip-nanos}

ロガーは、さまざまなログ イベントを整理するためにロガー名を使用します。ロガー名は階層を形成する string です。ロガーの名前の後に続く "." が他のロガーの名前のプレフィックスである場合、そのロガーは他のロガーの祖先です。例、"grandparent""grandparent.parent" の祖先であり、これは "grandparent.parent.child" の祖先です。ロガーは祖先のロガーのプロパティを継承し、独自のプロパティを定義することもできます。

Kotlin Syncドライバーは、さまざまなログ イベントを整理するために、次のロガー名を定義します。

ロガー名
説明

org.mongodb.driver.authenticator

認証イベントをログに記録

org.mongodb.driver.client

MongoClient インスタンスに関連するイベントをログに記録

org.mongodb.driver.cluster

MongoDB配置のモニタリングに関連するイベントをログに記録

org.mongodb.driver.connection

接続と接続プールをログに記録

org.mongodb.driver.connection.tls

TLS イベントをログに記録

org.mongodb.driver.operation

自動再試行に関連するログ記録を含む操作のログ

org.mongodb.driver.protocol

MongoDB配置に送信されたコマンドとそこから受信された応答をログに記録

org.mongodb.driver.uri

接続文字列の解析イベントをログに記録

org.mongodb.driver.management

Java管理拡張機能(JTX) イベントをログに記録

次の例では、ルート ロガーを無効にし、org.mongodb.driver.connection ロガーのログレベルを DEBUG に設定します。これにより、ドライバーは DEBUG レベル以上の接続と接続プールに関連するメッセージのみをログに記録するようになります。対応する構文を確認するには、Logback タブまたは Log4j2タブを選択します。

logback.xmlファイルを次のように設定します。

<configuration>
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%-4relative [%thread] %-5level %logger{30} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="org.mongodb.driver.connection" level="DEBUG" additivity="true"/>
<root level="OFF">
<appender-ref ref="CONSOLE" />
</root>
</configuration>

ロガーが正常に構成されたかテストするには、次のコードを実行します。

val mongoClient = MongoClient.create(<connection uri>);
val database = mongoClient.getDatabase(<database>);
val collection = database.getCollection<Document>(<collection>);
collection.find().first();

このコードでは、次のような出力が生成されます。

...
255 [main] DEBUG org.mongodb.driver.connection - Connection pool created for <MongoDB hostname> using options <connection-pool-options>
301 [cluster-ClusterId{value='<cluster-id>', description='null'}-<MongoDB hostname>] DEBUG org.mongodb.driver.connection - Connection pool ready for <MongoDB hostname>
321 [main] DEBUG org.mongodb.driver.connection - Checkout started for connection to <MongoDB hostname>
323 [main] DEBUG org.mongodb.driver.connection - Connection created: address=<MongoDB hostname>, driver-generated ID=3
335 [main] DEBUG org.mongodb.driver.connection - Connection ready: address=<MongoDB hostname>, driver-generated ID=3, established in=<connect-duration> ms
336 [main] DEBUG org.mongodb.driver.connection - Connection checked out: address=<MongoDB hostname>, driver-generated ID=3, duration=<checkout-duration> ms
363 [main] DEBUG org.mongodb.driver.connection - Connection checked in: address=<MongoDB hostname>, driver-generated ID=3

log4j2.xmlファイルを次のように設定します。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.mongodb.driver.connection" level="DEBUG"/>
<Root level="OFF">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

ロガーが正常に構成されたかテストするには、次のコードを実行します。

val mongoClient = MongoClient.create(<connection uri>);
val database = mongoClient.getDatabase(<database>);
val collection = database.getCollection<Document>(<collection>);
collection.find().first();

このコードでは、次のような出力が生成されます。

...
21:27:17.035 [main] DEBUG org.mongodb.driver.connection - Connection pool created for <MongoDB hostname> using options <connection-pool-options>
21:27:17.058 [cluster-ClusterId{value='<cluster-id>', description='null'}-<MongoDB hostname>] DEBUG org.mongodb.driver.connection - Connection pool ready for <MongoDB hostname>
21:27:17.064 [main] DEBUG org.mongodb.driver.connection - Checkout started for connection to <MongoDB hostname>
21:27:17.069 [main] DEBUG org.mongodb.driver.connection - Connection created: address=<MongoDB hostname>, driver-generated ID=3
21:27:17.075 [main] DEBUG org.mongodb.driver.connection - Connection ready: address=<MongoDB hostname>, driver-generated ID=3, established in=<connect-duration> ms
21:27:17.075 [main] DEBUG org.mongodb.driver.connection - Connection checked out: address=<MongoDB hostname>, driver-generated ID=3, duration=<checkout-duration> ms
21:27:17.086 [main] DEBUG org.mongodb.driver.connection - Connection checked in: address=<MongoDB hostname>, driver-generated ID=3

MongoDB のログ機能の詳細については、 MongoDB Serverマニュアルの「 ログ メッセージ 」を参照してください。

このガイドで説明したロギング フレームワークの詳細については、次の外部ドキュメントを参照してください。

戻る

ログ記録とモニタリング

項目一覧