Node.js 在应用程序中记录mongoose fire的所有查询

Node.js 在应用程序中记录mongoose fire的所有查询,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个使用nodejs和mongodb的应用程序。我用猫鼬做ODM。 现在我想记录mongoose在整个应用程序中发出的所有查询 如何记录这些信息?您可以像这样启用调试模式: mongoose.set('debug', true); 或者添加您自己的调试回调: mongoose.set('debug', function (coll, method, query, doc [, options]) { //do your thing }); 这将把所有执行的收集方法及其参数记录到控制台。

我有一个使用nodejs和mongodb的应用程序。我用猫鼬做ODM。 现在我想记录mongoose在整个应用程序中发出的所有查询


如何记录这些信息?

您可以像这样启用调试模式:

mongoose.set('debug', true);
或者添加您自己的调试回调:

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

这将把所有执行的收集方法及其参数记录到控制台。

我正在使用node bunyan,这是一个调试和跟踪查询的选项(可能会帮助其他人)


您还可以设置调试记录器参数:

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

mongoose如何格式化日志。IE我想用第二个选项让温斯顿登录。我喜欢mongoose日志的格式,我会用同样的方式格式化我的日志w/winston.Nice。但是如何只给mongoose debug Defaults这样的值添加颜色您可以使用chalk npm模块来着色
log(`CPU:${chalk.red('90%')}RAM:${chalk.green('40%'))磁盘:${chalk.yellow('70%')})我需要记录执行查询的文件名和行号。还有什么我能做到的吗?
mongoose.set("debug", (collectionName, method, query, doc) => {
    logger(`${collectionName}.${method}`, JSON.stringify(query), doc);
});