【发布时间】:2012-09-23 10:15:37
【问题描述】:
我使用带有连接池的 node.js 和 node-mongodb-native 驱动程序。有没有办法启用调试以查看发生了什么、有多少连接处于活动状态以及连接何时打开或关闭?
我想看到类似的东西:
* 连接 xxx 在主机上打开:端口 * 连接 yyy 在主机上打开:端口 * 连接 xxx 关闭【问题讨论】:
标签: node.js mongodb logging node-mongodb-native
我使用带有连接池的 node.js 和 node-mongodb-native 驱动程序。有没有办法启用调试以查看发生了什么、有多少连接处于活动状态以及连接何时打开或关闭?
我想看到类似的东西:
* 连接 xxx 在主机上打开:端口 * 连接 yyy 在主机上打开:端口 * 连接 xxx 关闭【问题讨论】:
标签: node.js mongodb logging node-mongodb-native
Db() 和 Server() 对象都支持记录器选项,这是一个具有 log、error 和 debug 函数的对象。 Db() 选项目前似乎没有记录,但在 0.9.6-20 2011-10-04 changelog entry 中提到。
我不确定此界面是否支持您需要的所有信息,但这绝对是一个不错的起点。驱动程序团队也可能会欢迎添加此类功能的拉取请求。
【讨论】:
可以使用节点的驱动Logger类:
import { Logger } from "mongodriver";
稍后在您的代码中:
Logger.setLevel("debug");
您可以在the official driver API doc 上查看文档
【讨论】:
debug。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))
【讨论】: