我想将我的错误日志存储在mongoDB集合中 . 我正在使用winston和winston -mongoDB .
得到错误:
throw new Error('无效传输,必须是带有日志方法的对象 . ');错误:无效传输,必须是具有日志方法的对象 .
这是logger文件中的代码 . 这是我的代码:从'app-root-path'导入appRoot;从'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
1 回答
更新的答案:
您需要在winston初始化中添加mongo传输 .
试试这段代码:
检查测试数据库中的日志集合 .
确保你有:
希望这能解决您的疑问!