заносить в журнал все запросы о том, что Mongoose fire в приложении

У меня есть приложение, использующее nodejs и mongodb. Я использовал mongoose для ODM. Теперь я хочу зарегистрировать все запросы, которые устраивают огонь во время всего приложения.

Как их записать?

Вы можете включить режим отладки следующим образом:

mongoose.set('debug', true); 

или добавить свой собственный отладочный ответ:

 mongoose.set('debug', function (coll, method, query, doc [, options]) { //do your thing }); 

Это запустит все запущенные методы сбора и их аргументы на консоль.

Я использую node bunyan, это опция для отладки и отслеживания запросов (может помочь кому-то еще)

 function serializer(data) { let query = JSON.stringify(data.query); let options = JSON.stringify(data.options || {}); return `db.${data.coll}.${data.method}(${query}, ${options});`; } let log = bunyan.createLogger({ name: 'AppName', src: false, serializers: { // ... dbQuery: querySerializer // ... }, // ... }); mongoose.set('debug', function(coll, method, query, doc, options) { let set = { coll: coll, method: method, query: query, doc: doc, options: options }; log.info({ dbQuery: set }); }); 

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

 node index.js DEBUG=mquery 

но это будет только регистрировать запросы , а не вставлять или обновлять утверждения.

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

 mongoose.set("debug", (collectionName, method, query, doc) => { console.log(`${collectionName}.${method}`, JSON.stringify(query), doc); }); 

или любой другой регистратор по вашему выбору:

 mongoose.set("debug", (collectionName, method, query, doc) => { logger(`${collectionName}.${method}`, JSON.stringify(query), doc); });