Избыточность в Winston Logger - PullRequest
0 голосов
/ 06 января 2020

Поскольку в приведенном ниже коде есть избыточность, кроме имени файла ... Пожалуйста, предложите мне способы уменьшить ее, так как я очень новичок до node 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') })
    ]
});

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Я бы предложил создать функцию, скажем, 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');
0 голосов
/ 06 января 2020

Напишите функцию и вызовите ее, как показано ниже:

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

...