5

我使用带有连接池的 node.js 和 node-mongodb-native 驱动程序。有什么方法可以启用调试以查看发生了什么、有多少连接处于活动状态以及连接何时打开或关闭?

我想看到类似的东西:

* 连接 xxx 在主机上打开:端口
* 连接 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

和对象都支持 logger 选项,这是一个具有Db(),和功能的对象。该选项目前似乎没有记录,但在0.9.6-20 2011-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 回答