【问题标题】:Redundancy in Winston LoggerWinston Logger 中的冗余
【发布时间】:2020-01-06 17:31:52
【问题描述】:

由于以下代码中除了文件名之外存在冗余...请建议我减少它的方法,因为我对节点 js 非常陌生。从我的应用程序调用记录器时,如何将文件名作为参数传递。

const loggerForDWTApps = createLogger({
    level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
    format: format.combine(
        format.timestamp({
            format: 'YYYY-MM-DD HH:mm:ss'
        }),
        format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
    transports: [new transports.File({ filename: path.join(logDir, 'XYZ.log') })
    ]    
});

const loggerForDWTService = createLogger({
    level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
    format: format.combine(
        format.timestamp({
            format: 'YYYY-MM-DD HH:mm:ss'
        }),
        format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
    transports: [new transports.File({ filename: path.join(logDir, 'ABC.log') })
    ]
});

【问题讨论】:

    标签: node.js winston


    【解决方案1】:

    我建议创建一个函数,比如 createLoggerWrapper,它可以为您的记录器配置接受任何不同的参数。

    例如:

    function createLoggerWrapper(logFile) {
      return createLogger({
        level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
        format: format.combine(
            format.timestamp({
                format: 'YYYY-MM-DD HH:mm:ss'
            }),
            format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
        transports: [new transports.File({ filename: path.join(logDir, logFile) })]
      });
    }
    
    const loggerForDWTApps = createLoggerWrapper('XYZ.log');
    const loggerForDWTService = createLoggerWrapper('ABC.log');
    

    【讨论】:

      【解决方案2】:

      编写一个函数并调用它,如下所示:

      function getWinstonConfig(fileName) {
         return {
            level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
            format: format.combine(
              format.timestamp({
                  format: 'YYYY-MM-DD HH:mm:ss'
              }),
              format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
              transports: [new transports.File({ filename: path.join(logDir, '${fileName}.log')})]    
         }
      }
      const loggerForDWTApps = createLogger(getWinstonConfig('ABC'));
      
      const loggerForDWTService = createLogger(getWinstonConfig('XYZ'));
      
      

      【讨论】:

        猜你喜欢
        • 2019-07-04
        • 2018-04-01
        • 2016-04-20
        • 2018-08-06
        • 2015-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多