I have application using nodejs and mongodb. I have used mongoose for ODM. Now i want to log all the queries that mongoose fire during the whole application.
How to log these?
You can enable debug mode like so:
mongoose.set('debug', true); or add your own debug callback:
mongoose.set('debug', function (coll, method, query, doc [, options]) { //do your thing }); This will log all executed collection methods and their arguments to the console.
You can use the following format:
mongoose.set("debug", (collectionName, method, query, doc) => { console.log(`${collectionName}.${method}`, JSON.stringify(query), doc); }); or any other logger of your choice:
mongoose.set("debug", (collectionName, method, query, doc) => { logger(`${collectionName}.${method}`, JSON.stringify(query), doc); }); log(` CPU: ${chalk.red('90%')} RAM: ${chalk.green('40%')} DISK: ${chalk.yellow('70%')} `);I'm using node bunyan, this is an option to debug and track queries(may help someone else)
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 }); });