我正在尝试使用 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
})
]
});
我正在导出这个记录器并在我的 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);**
})
我一直在尝试解决这个问题,但还没有想出任何有用的东西。非常感谢您对此问题的任何帮助。
最佳答案
我也有同样的问题,好像winston-mongodb日志函数有不同的参数(info作为要登录到mongo数据库的元对象,cb是如果你想查看日志操作后的结果的回调函数在 mongo 上完成)
解决方案: 安装winston-mongodb包,版本号为3.0.0
npm install winston-mongodb@3.0.0 --save
引用 github 问题 cb is not a function
关于node.js - 使用 winston-mongodb 和 express-winston 进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48202738/
相关文章:
java - Spring MongoTemplate - 将聚合结果映射到集合(例如 List 和
mongodb - 要将一条记录与 MongoDB 中的另一条记录相关联,可以使用 slug 吗?
javascript - 为已登录的用户手动创建 Passport session
node.js - Mongoose 类型错误 : User is not a constructo
java - Mongo 将 Document 转换为 DBObject
mongodb - 使用 mongodb 聚合的多个字段的不同计数
json - 使用 Python 从 MongoDB 文档创建 JSON 文件
node.js - 我应该使用什么数据类型来使用 MongoDB 存储图像?