Как заставить Winston-daily-rotate-file вращаться еженедельно

Я использую winston-daily-rotate-file для проекта Node. Как сделать так, чтобы файл журнала вращался еженедельно?

0 ответов

Из описания https://www.npmjs.com/package/winston-daily-rotate-file мы видим возможность
datePattern: "Строка, представляющая формат даты moment.js, который будет использоваться для вращения. Мета-символы, используемые в этой строке, будут определять частоту вращения файла. Например, если ваш datePattern просто 'HH', вы получите 24 файлы журнала, которые собираются и добавляются каждый день. (по умолчанию: 'ГГГГ-ММ-ДД')"

Итак, чтобы ответить на ваш вопрос, простой способ заставить файл журнала обновляться еженедельно - это установитьdatePattern: 'YYYY-w', где wнеделя года: 1 2 ... 52 53.
Дополнительные параметры для datePattern можно найти в формате даты moment.js

Ниже показано простое использование.

  const winston = require('winston');
  const DailyRotateFile = require('winston-daily-rotate-file');

  var winston = require('winston');
  require('winston-daily-rotate-file');

  var transport = new winston.transports.DailyRotateFile({
    filename: 'application-%DATE%.log',
    datePattern: 'YYYY-w'
  });

  transport.on('rotate', function(oldFilename, newFilename) {
     logger.info({'message':'New file created!'});
  });

  var logger = winston.createLogger({
    level: 'info',
    transports: [
      transport
    ]
  });

  logger.info('Hello World!');

Итак, файлы журнала будут называться как application-year-week.log

Например, неделя с 6 июля 2020 года по 12 июля 2020 года - это неделя номер 28 2020 года. Это означает, что этот файл application-2020-28.log будет создан на этой неделе, application-2020-29.logна следующую неделю и т. д. Вы можете рассчитать, какая неделя в году, с помощью этого калькулятора номеров недель

Другие вопросы по тегам