Ротация журналов еженедельно с номером недели в имени журнала - PullRequest
1 голос
/ 23 апреля 2020

Я настраиваю logrotate и хотел бы чередовать некоторые журналы еженедельно, желательно по понедельникам, и изменить их имена на example-%year%.w%weeknumber%, где %weeknumber% - номер недели в данном году.

Logrotate с моей конфигурацией будет запускаться ежедневно, добавляя файл, похожий на logrotate.cron в /etc/cron.daily/. Моя конфигурация logrotate выглядит следующим образом:

rotate 12
dateext
nocompress

/var/logs/example* {
    weekly
    dateformat .%Y-w%W
}

%W в конфигурации основан на формате strftime . Однако выполнение теста logrotate -df /etc/logrotate.d/myconf.conf приводит к следующему выводу:

(...)
considering log /var/logs/example
Creating new state
  Now: 2020-04-23 00:18
  Last rotated at 2020-04-23 00:00
  log needs rotating
rotating log /var/logs/example, log->rotateCount is 12
Converted ' .%Y-w%W' -> '.%Y-w%%W'
dateext suffix '.2020-w%W'
glob pattern '.[0-9][0-9][0-9][0-9]-w%W'
glob finding old rotated logs failed
renaming /var/logs/example to /var/logs/example.2020-w%W
(...)

Это означает, что вместо номера недели я бы получил буквально %W на его месте. То же самое происходит с %U при установке вместо %W.

Я использую logrotate 3.11.0, поскольку он является самым новым, доступным через zypper на машине, которую я хочу настроить.

Как заставить logrotate использовать фактический номер недели при переименовании файлов журнала?

1 Ответ

0 голосов
/ 24 апреля 2020

Использование %V вместо %U или %W помогло мне.

rotate 12
dateext
nocompress

/var/logs/example* {
    weekly
    dateformat .%Y-w%V
}

Согласно справочным страницам для strftime:

% V Номер недели ISO 8601 (см. ПРИМЕЧАНИЯ) текущего года в виде десятичного числа, диапазон от 01 до 53, где неделя 1 - это первая неделя, в которой в новом году не менее 4 дней. Смотрите также% U и% W. (Рассчитано из tm_year, tm_yday и tm_wday.)

Также, согласно записи man для 3.11.0 (которую я как-то пропустил, прежде чем задавать этот вопрос):

Разрешены только% Y% m% d% H% M% S% V и% s.

Сам %V был добавлен в 3.9.0.

Хотя этот вопрос касается более старой версии logrotate, по возможности используйте самую новую версию.

...