Какой логгер использовать вместе с Async ждут скрипты транспортира? - PullRequest
0 голосов
/ 03 мая 2019

Я использую модуль winston npm для записи логов в транспортир. Как только код транспортира был перенесен в асинхронный режим, подождите, возникло много проблем с синхронизацией журналов. (Несколько неопределенных и ноль входит). И казнь тоже идет за броском.

Я изучал вопрос о том, как настроить конфигурацию winston для поддержки формата асинхронного ожидания, но ничего не смог найти по этому поводу.

use strict;
const { createLogger, format, transports } = require('winston');
require('winston-daily-rotate-file');
const fs = require('fs');
const path = require('path');

const env = process.env.NODE_ENV || 'test';
const logDir = 'log';


///#####loggging levels
//{ error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5 }

// Create the log directory if it does not exist
if (!fs.existsSync(logDir)) {
  fs.mkdirSync(logDir);
}

const dailyRotateFileTransport =  new transports.DailyRotateFile({
  filename: `${logDir}/%DATE%-results.log`,
  datePattern: 'DD-MM-YYYY',
   maxSize: '20m',
    maxFiles: '14d'
});

const logger = createLogger({
  // change level if in dev environment versus production
  //level: env === 'development' ? 'info' : 'debug',
  //giving level as silly so that all logs are added to the file.
  level: env === 'development' ? 'info' : 'silly',

  format: format.combine(
    format.label({ label: path.basename(module.parent.filename) }),
    format.timestamp({ format: 'DD-MM-YYYY HH:mm:ss'}),
    format.printf(info => `${info.timestamp} ${info.level} [${info.label}]: ${info.message}`)
  ),
  transports: [
    new transports.Console({
      level: 'info',
      format: format.combine(
        format.colorize(),
        format.printf(
          info => `${info.timestamp} ${info.level} [${info.label}]: ${info.message}`
        )
      )
    }),
    dailyRotateFileTransport,    
  ],
  exceptionHandlers: [
    new transports.File({ filename: 'exceptions.log' })
  ]
});
module.exports = logger;

Приведенный выше конфигурационный файл отлично работает при работе со сценариями транспортировщиков на основе обещаний, но идет на бросок, когда на экране появляется асинхронное ожидание.

любые предложения или указатели будут очень полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...