Как вращать журнал на основе интервала, если журнал не превышает определенный размер?
Со страницы руководства 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 три поддерживаемых сценария:
- размер изменяется по размеру, самое большее один раз в день, независимо от прошедшего периода времени
- временной период вращается безоговорочно по временному периоду, независимо от размера
- minsize & timeperiod, если размер файла журнала превышает minsize, а затем повернуть на timeperiod. Обычно используется "minsize 1", что означает, что 0-байтовые журналы не вращаются, что сводит к минимуму беспорядок.
logrotate-3.8.1
добавляет:
- maxsize и timeperiod вращаются, когда размер превышает maxsize, или после истечения периода времени.
logrotate
в этом случае может потребоваться запускать больше, чем по умолчанию один раз в день.
logrotate-3.8.5
добавляет:
- почасовая поддержка и сохраняет полную метку времени в файле состояния. Ты должен бежать
logrotate
(по крайней мере) почасово для этого.