Javascript 无效传输,必须是具有日志方法winston mongodb logging的对象
我想在mongoDB集合中存储错误日志。我正在使用winston&winston-mongoDB 获取错误: 抛出新错误('无效传输,必须是带有日志的对象 方法');错误:无效传输,必须是具有日志的对象 方法 下面是日志文件中的代码。 这是我的密码: 从“应用程序根路径”导入Approt; 进口{ createLogger, 运输,, 格式, }来自“温斯顿”Javascript 无效传输,必须是具有日志方法winston mongodb logging的对象,javascript,node.js,mongodb,mongoose,winston,Javascript,Node.js,Mongodb,Mongoose,Winston,我想在mongoDB集合中存储错误日志。我正在使用winston&winston-mongoDB 获取错误: 抛出新错误('无效传输,必须是带有日志的对象 方法');错误:无效传输,必须是具有日志的对象 方法 下面是日志文件中的代码。 这是我的密码: 从“应用程序根路径”导入Approt; 进口{ createLogger, 运输,, 格式, }来自“温斯顿” import * as winston from 'winston'; require('winston-mongodb');
import * as winston from 'winston';
require('winston-mongodb');
const options = {
fileInfo: {
level: 'info',
filename: `${appRoot}/logs/info.log`,
handleExceptions: true,
json: true,
maxsize: 5242880, // 5MB
maxFiles: 5,
colorize: false,
timestamp: true,
},
mongoDB: {
db: 'mongodb://127.0.0.1:27017/test',
collection: 'log',
level: 'info',
storeHost: true,
capped: true,
},
};
winston.add(winston.transports.MongoDB, options.mongoDB);
const logger = createLogger({
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss',
}),
format.json()
),
transports: [
new transports.File(options.fileInfo)
],
});
logger.stream = {
write: (message, encoding) => {
logger.info(message);
},
};
export default logger;
版本:
"mongoose": "^5.2.6",
"morgan": "^1.9.0",
"winston": "^3.0.0",
"winston-mongodb": "^4.0.3",
mongodb@3.1.1
最新答复:
您需要在winston初始化中添加mongo传输
请尝试以下代码:
const logger = winston.createLogger({
transports: [
new winston.transports.MongoDB({
db: 'mongodb://localhost:27017/test',
collection: 'log',
level: 'info',
storeHost: true,
capped: true,
})
]
});
检查测试数据库中的日志集合
确保您有:
logger.info("Test log!")
希望这能解决你的疑问 我也有同样的问题,我所做的就是替换这句话:
winston.add(winston.transports.File, { filename: 'logfile.log' });
为此:
winston.add(new winston.transports.File({ filename: 'logfile.log' }));
这发生在winston的最新主要更新中,即3.x.x及以上版本
希望这有帮助 我也遇到了类似的问题,所以我所做的就是将
包.json
修改为“winston”:“^3.0.0”
到“winston”:“2.*”
,然后在命令行中输入此命令npm安装-保存winston这是目前为止的最新版本
“猫鼬”:“^5.11.10”,
“温斯顿”:“^3.3.3”,
“winston mongodb”:“^5.0.5”
我也面临同样的问题。这就是解决我问题的方法
winston.add(
new winston.transports.File({ filename: "logfile.log", level: "error" })
);
winston.add(
new winston.transports.MongoDB({ db: "mongodb://localhost/vidly" })
);
winston.configure({transports:[new winston.transports.File({filename:'logfile.log'})])代码>
这对我有用。希望它也能对您有所帮助。嗨,杰克,控制台和文件传输工作正常。我的问题是mongodb传输,即登录到mongodb集合。好的,让我检查一下。@saurabhujjainwal我已经更新了我的答案,请检查一下。谢谢。您是否可以帮助将元数据记录到mongoDb。@saurabhujjainwal,如果答案解决了您的查询,您是否可以批准该答案。我确认,这对我的情况有帮助。和往常一样,当升级到库的新版本时,api中的无用更改会破坏整个应用程序。我正是这么想的,你在这里的回答证实了这一点。是的,这工作得很好,除了我没有看到终端中的任何东西,但得到了日志文件。谢谢