首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以在不改变调用方式的情况下向module.exports添加第二个函数导出吗?

我可以在不改变调用方式的情况下向module.exports添加第二个函数导出吗?
EN

Stack Overflow用户
提问于 2019-03-15 03:56:57
回答 1查看 25关注 0票数 0

我有一个在我的许多项目中使用的日志记录模块,它通常导出单个Winston记录器,所以我所做的就是定义一个记录器及其传输,然后导出它:

代码语言:javascript
复制
module.exports = logger;

当使用const logger = require('mylogger.js')导入时,我会使用内置的各种级别(logger.info logger.debug等)。

现在,我决定创建第二个日志函数,将日志写入不同的文件,因此我需要创建并导出一个新的传输。问题是,如果我切换到module.exports = {logger, mynewlogger},这将改变我导入和调用函数的方式,我在许多地方都有这样的方法。

除了创建第二个文件并导入两个文件之外,有没有其他方法可以添加第二个导出,而不必在其他地方更改我的代码?

EN

回答 1

Stack Overflow用户

发布于 2019-03-15 19:04:25

可以,您可以为单个导出的记录器定义多个传输。在创建Winston日志时,“transports”属性是一个允许您定义多个输出的数组。

这是我有一个有两个传输器的例子。第一个是控制台,第二个是每日旋转日志。

代码语言:javascript
复制
const winston = require('winston');
const Rotate = require('winston-daily-rotate-file');    
const tsFormat = () => (new Date()).toLocaleTimeString();

const logger = new (winston.Logger)({
    transports: [
        // colorize the output to the console
        new (winston.transports.Console)({
            timestamp: tsFormat,
            colorize: true,
            level: 'info',
        }),
        new (Rotate)({
            filename: `${logDir}/${logName}-app.log`,
            timestamp: tsFormat,
            datePattern: 'YYYY-MM-DD',
            prepend: true,
            level: env === 'development' ? 'verbose' : 'info',
        }),
    ],
});

module.exports = logger;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55171034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档