Winston logger.info 不是函数

Posted

技术标签:

【中文标题】Winston logger.info 不是函数【英文标题】:Winston logger.info is not a function 【发布时间】:2017-08-27 19:20:00 【问题描述】:

我已经为 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 错误。怎么了?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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);
...


【讨论】:

以上是关于Winston logger.info 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

logger.info () 输出的日志文件在哪里?

请教logger.info与System.out.print的区别

logger.info 和 logger.debug 之间的区别

logger.info(); 啥意思

温斯顿没有在打字稿中登录到控制台

如何使用winston在子目录而不是根目录中设置日志?