logging所有在应用程序中引起mongoose注意的查询

我有应用程序使用nodejs和mongodb。 我用mongoose做ODM。 现在我想在整个应用程序中logging所有发生mongoose触发的查询。

如何logging这些?

您可以启用debugging模式,如下所示:

mongoose.set('debug', true); 

或添加您自己的debuggingcallback:

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

这会将所有已执行的收集方法及其参数logging到控制台。

我使用节点bunyan,这是一个选项来debugging和跟踪查询(可能会帮助别人)

 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 }); }); 

您还可以设置debugginglogging器参数:

 node index.js DEBUG=mquery 

但是这只会logging查询 ,不能插入或更新语句。