我想将我的错误日志存储在mongoDB集合中。我使用的是winston & winston -mongoDB。
获取错误:
throw new Error('Invalid transport,must be an object with a log method.');错误:无效传输,必须是具有日志方法的对象。
下面是logger文件中的代码。下面是我的代码:从'app-root-path'导入appRoot; import { createLogger,transports,format,} from 'winston';
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
8条答案
按热度按时间r8uurelv1#
我也遇到了同样的问题,我所做的就是替换这句话:
对此:
这发生在winston的最新主要更新中,即3.x.x及以上版本。
希望这有帮助!
zaq34kh62#
更新答案:
您需要在winston初始化中添加mongo传输。
试试这个代码:
检查测试数据库中的日志收集。
确保您拥有:
希望这能解决你的疑问!
fcwjkofz3#
这是目前最新的版本。
“mongoose”:“^5.11.10”,“winston”:“^3.3.3”,“winston-mongodb”:“^5.0.5”
我也面临着同样的问题。这就是解决我的问题
rdlzhqv94#
我遇到了类似的问题,所以我所做的就是将
package.json
从"winston": "^3.0.0"
改为"winston": "2.*"
,然后在命令行中输入此命令npm install -save winston
de90aj5v5#
winston.configure({transports: [new winston.transports.File({ filename: 'logfile.log' }) ]});
这对我很有效。希望对你也有帮助。
z3yyvxxp6#
我也在学习
nodeJS
,发生了这个winston
日志记录问题。因此,之前提出的解决方案得到了再次确认,并且效果良好。我所做的改变是从
收件人:
我的软件包版本如下:
y1aodyip7#
如果我换掉了
mwecs4sa8#
遇到了同样的问题以下是我的工作,在package.json中,将winston版本设置为
“winston”:“^2.4.7”,“winston-mongodb”:“^5.1.1”