[英]throw new Error Invalid transport must be an object with a log method
[英]Invalid transport, must be an object with a log method winston mongodb logging
我想将我的错误日志存储在 mongoDB 集合中。 我正在使用 winston & winston -mongoDB。
得到错误:
throw new Error('无效传输,必须是带有日志方法的 object。'); 错误:无效传输,必须是具有日志方法的 object。
这是记录器文件中的代码。 这是我的代码: import appRoot from 'app-root-path'; 从 'winston' 导入 { createLogger, transports, format, };
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.add(winston.transports.File, { filename: 'logfile.log' });
对此:
winston.add(new winston.transports.File({ filename: 'logfile.log' }));
这发生在 winston 的最新主要更新中,即 3.xx 及更高版本。
希望这可以帮助!
您需要在 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!")
希望这能解决您的疑问!
我遇到了类似的问题,所以我所做的是将package.json
更改为"winston": "^3.0.0"
到"winston": "2.*"
然后输入这个命令npm install -save winston
命令行
这是截至目前的最新版本。
"mongoose": "^5.11.10", "winston": "^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' }) ]});
这对我有用。 希望它对你也有帮助。
我也在学习nodeJS
并且发生了这个winston
日志记录问题。 因此,之前提出的解决方案得到了再次确认并且效果很好。
我所做的改变来自
winston.add(
winston.transports.File,
{ filename: "logfile.log" }
);
到:
winston.add(new winston.transports.File({ filename: 'logfile.log' }));
我的包版本如下:
{
"@hapi/joi": "^17.1.1",
"bcrypt": "^5.0.1",
"config": "^3.3.7",
"express": "^4.17.3",
"express-async-errors": "^3.1.1",
"fawn": "^2.1.5",
"font": "^0.0.4",
"joi-objectid": "^4.0.2",
"jsonwebtoken": "^8.5.1",
"lodash": "^4.17.21",
"mongoose": "^6.2.8",
"pug": "^3.0.2",
"winston": "^3.6.0"
}
如果我更换它对我有用:
<br>
winston.add(azureApplicationInsightsLogger, {....<br>
with :<br>
winston.add(new azureApplicationInsightsLogger(), {...<br>
and <br>
winston.add(winston.transports.Console, {...<br>
with : <br>
winston.add(new winston.transports.Console(), {...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.