Javascript 重用模块中定义的对象

Javascript 重用模块中定义的对象,javascript,Javascript,我用两个不同的文件定义了一个记录器,并使用如下方式: main.js var config = require('./config'); var log = require('./services/logger')(config); log.logger.info("Info Logging"); var config = {}; var PRODUCTION = process.env.NODE_ENV === "production"; config.log = { level :

我用两个不同的文件定义了一个记录器,并使用如下方式:

main.js

var config = require('./config');
var log = require('./services/logger')(config);
log.logger.info("Info Logging");
var config = {};
var PRODUCTION = process.env.NODE_ENV === "production";
config.log = {
    level : 'info'
};
module.exports = config;
module.exports = function (config) {
    var winston = require('winston');
    var logger = new(winston.Logger)({
            transports : [new(winston.transports.Console)({
                    level : config.log.level
                })]
        });
    var winstonStream = {
        write : function (message, encoding) {
            logger.info(message.slice(0, -1));
        }
    };
    return {
        logger : logger,
        expressStreamLogger : winstonStream
    };
};
config.js

var config = require('./config');
var log = require('./services/logger')(config);
log.logger.info("Info Logging");
var config = {};
var PRODUCTION = process.env.NODE_ENV === "production";
config.log = {
    level : 'info'
};
module.exports = config;
module.exports = function (config) {
    var winston = require('winston');
    var logger = new(winston.Logger)({
            transports : [new(winston.transports.Console)({
                    level : config.log.level
                })]
        });
    var winstonStream = {
        write : function (message, encoding) {
            logger.info(message.slice(0, -1));
        }
    };
    return {
        logger : logger,
        expressStreamLogger : winstonStream
    };
};
logger.js

var config = require('./config');
var log = require('./services/logger')(config);
log.logger.info("Info Logging");
var config = {};
var PRODUCTION = process.env.NODE_ENV === "production";
config.log = {
    level : 'info'
};
module.exports = config;
module.exports = function (config) {
    var winston = require('winston');
    var logger = new(winston.Logger)({
            transports : [new(winston.transports.Console)({
                    level : config.log.level
                })]
        });
    var winstonStream = {
        write : function (message, encoding) {
            logger.info(message.slice(0, -1));
        }
    };
    return {
        logger : logger,
        expressStreamLogger : winstonStream
    };
};
问题

在另一个文件中,我想使用记录器(
log.logger
)。每次需要使用记录器时,是否应重复以下要求

var config = require('./config');
var log = require('./services/logger')(config);
log.logger.info("Info Logging");

您还可以让记录器将该配置作为默认配置导入,并且仅在没有提供其他配置的情况下使用它。您确实需要有多个记录器实例吗?