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

Javascript 无效传输,必须是具有日志方法winston mongodb logging的对象,javascript,node.js,mongodb,mongoose,winston,Javascript,Node.js,Mongodb,Mongoose,Winston,我想在mongoDB集合中存储错误日志。我正在使用winston&winston-mongoDB 获取错误: 抛出新错误('无效传输,必须是带有日志的对象 方法');错误:无效传输,必须是具有日志的对象 方法 下面是日志文件中的代码。 这是我的密码: 从“应用程序根路径”导入Approt; 进口{ createLogger, 运输,, 格式, }来自“温斯顿” import * as winston from 'winston'; require('winston-mongodb');

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

获取错误:

抛出新错误('无效传输,必须是带有日志的对象 方法');错误:无效传输,必须是具有日志的对象 方法

下面是日志文件中的代码。 这是我的密码: 从“应用程序根路径”导入Approt; 进口{ 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
最新答复: 您需要在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!")

希望这能解决你的疑问

我也有同样的问题,我所做的就是替换这句话:

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

winston.add(new winston.transports.File({ filename: 'logfile.log' }));
这发生在winston的最新主要更新中,即3.x.x及以上版本


希望这有帮助

我也遇到了类似的问题,所以我所做的就是将
包.json
修改为
“winston”:“^3.0.0”
“winston”:“2.*”
,然后在命令行中输入此命令
npm安装-保存winston

这是目前为止的最新版本

“猫鼬”:“^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" })
);
winston.configure({transports:[new winston.transports.File({filename:'logfile.log'})])


这对我有用。希望它也能对您有所帮助。

嗨,杰克,控制台和文件传输工作正常。我的问题是mongodb传输,即登录到mongodb集合。好的,让我检查一下。@saurabhujjainwal我已经更新了我的答案,请检查一下。谢谢。您是否可以帮助将元数据记录到mongoDb。@saurabhujjainwal,如果答案解决了您的查询,您是否可以批准该答案。我确认,这对我的情况有帮助。和往常一样,当升级到库的新版本时,api中的无用更改会破坏整个应用程序。我正是这么想的,你在这里的回答证实了这一点。是的,这工作得很好,除了我没有看到终端中的任何东西,但得到了日志文件。谢谢