我想将错误日志存储在mongoDB集合中。我正在使用winston和winston -mongoDB。
得到错误:
抛出新错误(“无效的传输,必须是带有日志的对象 方法。');错误:传输无效,必须是带有日志的对象 方法。
这是记录器文件中的代码。 这是我的代码: 从'app-root-path'导入appRoot; 导入{ createLogger, 运输, 格式, }来自“温斯顿”;
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
答案 0 :(得分:3)
我遇到了同样的问题,我要做的就是替换以下语句:
winston.add(winston.transports.File, { filename: 'logfile.log' });
对此:
winston.add(new winston.transports.File({ filename: 'logfile.log' }));
这种情况发生在winston的最新主要更新版本(即3.x.x及更高版本)中。
希望这会有所帮助!
答案 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!")
希望这可以解决您的查询!
答案 2 :(得分:1)
这是截至目前的最新版本。
"猫鼬": "^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" })
);
答案 3 :(得分:0)
我遇到了类似的问题,所以我所做的是将package.json
的行从"winston": "^3.0.0"
更改为"winston": "2.*"
,然后在命令行中输入了该命令npm install -save winston
>
答案 4 :(得分:0)
winston.configure({transports: [new winston.transports.File({ filename: 'logfile.log' }) ]});
这对我有用。希望对你也有帮助。