温斯顿 logger.info 不是函数

Winston logger.info is not a function

我已将 Winston 设置为传输到 MySQL 和控制台,并将其放入名为 logger 的模块中。像这样...

// modules/logger.js

/* require statements */

exports.logger = new (winston.Logger)({
    transports: [
        new winstonMysql(winstonMysqlConfig),
        new (winston.transports.Console)
    ]
});

然后在/modules

// modules/index.js

/* grab other modules */

exports.logger = require('./logger.js');

当我console.log(modules.logger)时,我得到了这个

{ logger: 
    EventEmitter {
        ...
        error: [Function],
        warn: [Function],
        info: [Function],
        verbose: [Function],
        debug: [Function],
        silly: [Function],
        ...
    }
 }

但是当我调用 modules.logger.info() 时它抛出 modules.logger.info is not a function 错误。怎么了?

您没有在 modules.js 中正确导出记录器。

exports.logger = require('./logger.js').logger;

我也遇到过类似的问题,但我的目录结构有些不同我有一个记录器文件和导入有点不同这里是我如何使用上面的参考修复的

const winston = require('winston');

const logConfiguration = {
    format: winston.format.json(),
    'transports': [
        new winston.transports.Console(),
        new winston.transports.File({
            filename: 'sample.log'
        })
    ]
};


const logger = winston.createLogger(logConfiguration);

exports.logger = logger;

导入

...

const logger = require('../logger/app-logger').logger
logger.info({type: 'login', user: user.name});
...