我正在尝试使用express-winston和winston-mongodb在NodeJS项目中将请求/响应记录到MongoDB中 . 这是我到目前为止工作的示例代码;
const expressWinston = require('express-winston');
const winston = require('winston');
require('winston-mongodb').MongoDB;
const logger = expressWinston.logger({
transports: [
winston.add(winston.transports.MongoDB, {
db : 'something',
collection : 'something',
level : 'info',
capped : true
})
]
});
我正在导出这个 Logger 并使用它我的index.js;
app.use(logger);
最后,我面临着两个问题;
-
我的Mongo集合中为每个请求/响应创建了一个新条目,但它们是空的,如下所示
-
即使创建了条目我也有异常;
TypeError:cb不是logDb.collection.insertOne.then.catch.err(\ node_modules \ winston-mongodb \ lib \ winston-mongodb.js:213:7)中的函数
以下是winston-mongodb.js中导致异常的代码块;
this.logDb.collection(this.collection).insertOne(entry).then(()=>{
console.error('55dddddrrr', {});
this.emit('logged');
**cb(null, true);**
})
我一直试图解决这个问题但是还没有想出任何有用的东西 . 非常感谢有关这个问题的任何帮助 .
1 回答
我有同样的问题,似乎winston-mongodb日志函数采用不同的参数(info作为要登录到mongo数据库的元对象,cb是回调函数,如果你想看到mongo上的日志操作后的结果完成)
解决方案:安装版本号为3.0.0的winston-mongodb软件包
npm install winston-mongodb@3.0.0 --save
对github问题的引用cb is not a function