首页 文章

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

提问于
浏览
1

我想将我的错误日志存储在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 回答

  • 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!")
    

    希望这能解决您的疑问!

相关问题