Winston Logger 中的冗余

Redundancy in Winston Logger

因为除了文件名之外,下面的代码中有冗余...请建议我减少它的方法,因为我对节点 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') })
    ]
});

写一个函数,调用如下:

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

我建议创建一个函数,比如 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');