5

接続プールを使用して、node.jsとnode-mongodb-nativeドライバーを使用します。何が起こっているのか、アクティブな接続の数、接続がいつ開かれるか閉じられるかを確認するためにデバッグを有効にする方法はありますか?

私は次のようなものを見たいです:

*接続xxxがhost:portで開かれました
*接続yyyがhost:portで開かれました
*接続xxxが閉じられました
4

3 に答える 3

3
  1. コマンドがMongoDBに送信されるのを監視するには、ドライバーロガーのレベルをに設定しdebugます。
  2. 接続プールイベントに対応するには、それらをサブスクライブして自分でログに記録します。
  3. セカンダリへの参加やレプリカセットとの切断など、トポロジの変更に対応するためにトポロジの監視が必要になる場合があります。
const client = new MongoClient('mongodb://127.0.0.1:27017/', {
  useUnifiedTopology: true,
  loggerLevel: 'debug',
  // logger: (message, context) => console.dir(context),
})

// connection pool monitoring
client.on('connectionPoolCreated', event => console.dir(event))
client.on('connectionPoolClosed', event => console.dir(event))
client.on('connectionCreated', event => console.dir(event))
client.on('connectionReady', event => console.dir(event))
client.on('connectionClosed', event => console.dir(event))
client.on('connectionCheckOutStarted', event => console.dir(event))
client.on('connectionCheckOutFailed', event => console.dir(event))
client.on('connectionCheckedOut', event => console.dir(event))
client.on('connectionCheckedIn', event => console.dir(event))
client.on('connectionPoolCleared', event => console.dir(event))

// topology monitoring
client.on('serverDescriptionChanged', event => console.dir(event))
client.on('serverHeartbeatStarted', event => console.dir(event))
client.on('serverHeartbeatSucceeded', event => console.dir(event))
client.on('serverHeartbeatFailed', event => console.dir(event))
client.on('serverOpening', event => console.dir(event))
client.on('serverClosed', event => console.dir(event))
client.on('topologyOpening', event => console.dir(event))
client.on('topologyClosed', event => console.dir(event))
client.on('topologyDescriptionChanged', event => console.dir(event))
于 2020-04-26T17:13:38.593 に答える
1

およびオブジェクトは両方とも、、および関数を持つオブジェクトであるロガーオプションをサポートしDb()ます。このオプションは現時点では文書化されていないようですが、0.9.6-202011-10-04変更ログエントリに記載されています。Server()logerrordebugDb()

必要なすべての情報がこのインターフェースでサポートされているかどうかはわかりませんが、開始するのに最適な場所です。ドライバーチームは、おそらくそのような機能を追加するためのプルリクエストを歓迎するでしょう。

于 2012-10-02T15:14:19.740 に答える
1

ノードのドライバーLoggerクラスを使用できます。

import { Logger } from "mongodriver";

そして後であなたのコードで:

Logger.setLevel("debug");

公式のドライバーAPIドキュメントでドキュメントを確認できます

于 2020-04-01T12:03:03.127 に答える