Назад | Перейти на главную страницу

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

На странице руководства logrotate:

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

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

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

Я неправильно интерпретирую руководство? Как мне заставить журнал обновляться еженедельно, И если он превышает 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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