【问题标题】:how to enable debug on node.js and mongoDB native driver?如何在 node.js 和 mongoDB 本机驱动程序上启用调试?
【发布时间】:2012-09-23 10:15:37
【问题描述】:

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

我想看到类似的东西:

* 连接 xxx 在主机上打开:端口 * 连接 yyy 在主机上打开:端口 * 连接 xxx 关闭

【问题讨论】:

    标签: node.js mongodb logging node-mongodb-native


    【解决方案1】:

    Db()Server() 对象都支持记录器选项,这是一个具有 logerrordebug 函数的对象。 Db() 选项目前似乎没有记录,但在 0.9.6-20 2011-10-04 changelog entry 中提到。

    我不确定此界面是否支持您需要的所有信息,但这绝对是一个不错的起点。驱动程序团队也可能会欢迎添加此类功能的拉取请求。

    【讨论】:

    • 谢谢,我修改了connection.js来记录连接并在github上拉了一个请求
    • 你是如何做到这一点的?我传递了一个对象,该对象支持那些应该登录到控制台的方法,但我没有看到蹲着。
    • 如果有帮助,拉取请求是:github.com/mongodb/node-mongodb-native/pull/765
    【解决方案2】:

    可以使用节点的驱动Logger类:

    import { Logger } from "mongodriver";
    

    稍后在您的代码中:

    Logger.setLevel("debug");
    

    您可以在the official driver API doc 上查看文档

    【讨论】:

      【解决方案3】:
      1. 要查看发送到 MongoDB 的命令,请将 driver logger's 级别设置为 debug
      2. 要对connection pool events 做出反应,只需订阅它们并自己登录即可。
      3. 您可能需要topology monitoring 对拓扑变化做出反应,例如加入辅助节点或与副本集断开连接。
      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))
      

      【讨论】:

        猜你喜欢
        • 2016-11-09
        • 2020-02-09
        • 1970-01-01
        • 2015-01-18
        • 2015-01-30
        • 2013-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多