gpt4 book ai didi

javascript - 无效传输,必须是具有日志方法的对象 winston mongodb logging

转载 作者:可可西里 更新时间:2023-11-01 09:20:37 27 4
gpt4 key购买 nike

我想将我的错误日志存储在 mongoDB 集合中。我正在使用 winston & winston -mongoDB。

获取错误:

throw new Error('Invalid transport, must be an object with a log method.'); Error: Invalid transport, must be an object with a log method.

这是记录器文件中的代码。 这是我的代码: 从“app-root-path”导入 appRoot; 进口 { 创建记录器, 运输, 格式, } 来自“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

最佳答案

我有同样的问题,我所做的是替换这条语句:

winston.add(winston.transports.File, { filename: 'logfile.log' });

为此:

winston.add(new winston.transports.File({ filename: 'logfile.log' }));

这发生在 winston 的最新主要更新中,即 3.x.x 及更高版本。

希望这对您有所帮助!

关于javascript - 无效传输,必须是具有日志方法的对象 winston mongodb logging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51702149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com