как включить отладку на собственном драйвере node.js и mongoDB?

я использую node.js и драйвер node-mongodb-native с пулом соединений. Есть ли способ включить отладку, чтобы увидеть, что происходит, сколько соединений активно и когда соединение открывается или закрывается?

я хотел бы увидеть что-то вроде:

* connection xxx opened on host:port
* connection yyy opened on host:port
* connection xxx closed

person Alessandro    schedule 02.10.2012    source источник


Ответы (3)


Db() и Server() поддерживают параметр регистратора, который представляет собой объект с функциями log, error и debug. . Параметр Db() в настоящее время не задокументирован, но он упоминается в 0.9.6-20 2011-10-04 запись в журнале изменений.

Я не уверен, что вся необходимая вам информация поддерживается этим интерфейсом, но это определенно хорошее место для начала. Команда драйверов также, вероятно, приветствовала бы запрос на добавление таких функций.

person jmikola    schedule 02.10.2012
comment
спасибо, я модифицировал connection.js для регистрации подключений и вытащил запрос на github - person Alessandro; 04.10.2012
comment
Как вы заставили это работать? Я передал объект, поддерживающий те методы, которые должны войти в консоль, но я не вижу дидли приседаний. - person fthinker; 20.08.2013
comment
Если это поможет, запрос на вытягивание был: github.com/mongodb/node-mongodb -native/pull/765 - person jmikola; 20.08.2013

  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))
person xamgore    schedule 26.04.2020

Вы можете использовать класс Logger драйвера узла:

import { Logger } from "mongodriver";

И позже в вашем коде:

Logger.setLevel("debug");

Вы можете ознакомиться с документацией в официальном документе API драйвера

person Mendes    schedule 01.04.2020