首页 文章

使用winston-mongodb和express-winston进行记录

提问于
浏览
3

我正在尝试使用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集合中为每个请求/响应创建了一个新条目,但它们是空的,如下所示
    enter image description here

  • 即使创建了条目我也有异常;

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 回答

  • 5

    我有同样的问题,似乎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

相关问题