Реализация Promise в Winston Logging Framework - PullRequest
0 голосов
/ 07 января 2020

Как я могу реализовать Promise в своем журнале (код ниже)

function logger(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) })]
    });
}

module.exports.logger = logger;

И как использовать его в качестве асинхронного / ожидающего в вызывающей стороне этого регистратора (пример кода, как показано ниже)

const loggerForXYZ = logger('XYZ.log');
loggerForXYZ .log('info', 'test message log');

1 Ответ

1 голос
/ 07 января 2020

Вы можете обернуть часть регистрации в Promise.resolve. Примерно так.

log({ level, message } : {level: string, message: string }) {
    LoggerService.bottleneck.schedule({}, () => {
      return Promise.resolve(LoggerService.getLogger().log({ level, message }));
    });
  }

Ссылка - https://github.com/winstonjs/winston/issues/1364#issuecomment -398404761

В нем рассказывается, как использовать bottleneck и promises

...