Как вращать журнал на основе интервала, если журнал не превышает определенный размер?

Со страницы руководства logrotate:

миниатюрный размер
Файлы журналов чередуются, когда они увеличиваются в размере, превышающем размер байтов, но не ранее указанного дополнительного временного интервала (ежедневно, еженедельно, ежемесячно или ежегодно). Связанный параметр размера аналогичен, за исключением того, что он является взаимоисключающим с параметрами временного интервала и вызывает ротацию файлов журнала без учета последнего времени вращения. При использовании minsize учитываются размер и временная метка файла журнала.

размер размер
Файлы журнала вращаются, когда они становятся больше, чем размер байтов. Если за размером следует k, размер считается в килобайтах. Если используется M, размер указывается в мегабайтах, а если используется G, размер указывается в гигабайтах. Так что размер 100, размер 100k, размер 100M и размер 100Gare все действительны.

Я установил размер 5М, а интервал - еженедельный, полагая, что журналы будут чередоваться еженедельно, и будет происходить дополнительная ротация, если размер журнала превышает 5М. Но что происходит, так это то, что журнал не поворачивается, если он не превышает 5M, что, по-видимому, и должно быть для minsize.

Я неправильно истолковываю руководство? Как заставить журнал вращаться еженедельно И если он превышает 5 миллионов?

РЕДАКТИРОВАТЬ:

Я не уверен, актуальна ли следующая информация, а просто дополняю:

Я использую rsyslog для основной регистрации сообщений, безопасности, cron, maillog, загрузки. Ниже приведены дата ротации и размер файла предпоследних журналов, в которых размер и интервал установлены, как описано выше:

filename  rotation date  file size
messages  20130129       5.3MB
secure    20130113       5.1kB
cron      20130113       3.6kB
maillog   20130113       1.1kB

Как видно, вращаются только сообщения.

EDIT2:

Я должен проверить с man logrotate, Они фактически обновили его с опцией maxsize. Это должно быть то, что я ищу:

максимальный размер
Файлы журналов вращаются, когда они увеличиваются в байтах больше, чем до заданного дополнительного интервала времени (ежедневно, еженедельно, ежемесячно или ежегодно). Связанный параметр размера аналогичен, за исключением того, что он является взаимоисключающим с параметрами временного интервала и вызывает ротацию файлов журнала без учета последнего времени вращения. При использовании maxsize учитываются как размер, так и временная метка файла журнала.

1 ответ

Решение

Здесь есть ответы на некоторые вопросы: ежедневная регистрация и размер?

типично logrotate будет выполняться только один раз в день, поэтому ограничения по размеру не будут соблюдаться. logrotateфайл состояния (возможно /var/lib/logrotate.status) хранит только даты (а не время), он не предназначен для более частого использования, поэтому вы не можете тривиально поворачивать файлы чаще (обновление: версия 3.85 добавляет почасовую поддержку и сохраняет полную метку времени в файле состояния.)

Вы не говорите, какой syslogd вы используете, rsyslog и syslog-ng поддерживают самоуправляемое вращение на основе размера, поэтому вы должны иметь возможность заставить их вращаться по размеру и получать logrotate чередовать еженедельно (хотя для именования файлов может потребоваться некоторая мысль, чтобы убедиться, что одновременное чередование файлов случайно не удаляет что-либо).

Еще один вариант - использовать конвейерные журналы, точно так же как Apache, фактически Apache-2.4 rotatelogs поддерживает именно эту функцию (предыдущие версии поддерживали только размер или время независимо). Вы не говорите, откуда берутся логи, но вы можете войти в трубу или fifo и использовать rotatelogs, если это поддерживается.

С logrotate <= v3.8.0 три поддерживаемых сценария:

  1. размер изменяется по размеру, самое большее один раз в день, независимо от прошедшего периода времени
  2. временной период вращается безоговорочно по временному периоду, независимо от размера
  3. minsize & timeperiod, если размер файла журнала превышает minsize, а затем повернуть на timeperiod. Обычно используется "minsize 1", что означает, что 0-байтовые журналы не вращаются, что сводит к минимуму беспорядок.

logrotate-3.8.1 добавляет:

  1. maxsize и timeperiod вращаются, когда размер превышает maxsize, или после истечения периода времени. logrotate в этом случае может потребоваться запускать больше, чем по умолчанию один раз в день.

logrotate-3.8.5 добавляет:

  1. почасовая поддержка и сохраняет полную метку времени в файле состояния. Ты должен бежать logrotate (по крайней мере) почасово для этого.
Другие вопросы по тегам