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

ozg*_*gen 5 mongodb node.js express winston

我正在尝试使用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
    })
 ]
});
Run Code Online (Sandbox Code Playgroud)

我正在导出这个记录器并使用它我的index.js;

app.use(logger);
Run Code Online (Sandbox Code Playgroud)

最后,我面临着两个问题;

  1. 我的Mongo集合中为每个请求/响应创建了一个新条目,但它们是空的,如下所示 在此输入图像描述

  2. 即使创建了条目,我也有例外;

    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);**
})
Run Code Online (Sandbox Code Playgroud)

我一直试图解决这个问题但是还没有想出任何有用的东西.非常感谢有关这个问题的任何帮助.

M.e*_*yed 6

我有同样的问题,似乎winston-mongodb日志函数采用不同的参数(info作为要登录到mongo数据库的元对象,cb是回调函数,如果你想看到mongo上的日志操作后的结果完成)

解决方案:安装版本号为3.0.0的winston-mongodb软件包

npm install winston-mongodb@3.0.0 --save

对github问题的引用 cb不是一个函数