Как заставить 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
на следующую неделю и т. д. Вы можете рассчитать, какая неделя в году, с помощью этого калькулятора номеров недель