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

Когда использовать опцию delaycompress в logrotate?

Страница руководства logrotate Говорит, что:

It can be used when some program cannot be told to close its logfile
and  thus  might  continue writing to the previous log file for some
time.

Меня это смущает. Если программе нельзя приказать закрыть файл журнала, она продолжит запись навсегда, не для когда-то. Если сжатие откладывается до следующего цикла вращения, программа продолжает запись в этот файл даже после следующего цикла вращения. Как откладываешь решение проблемы?

Насколько я понимаю, copytruncate следует использовать, когда программе нельзя приказать закрыть файл журнала. Я знаю, что некоторые данные, записанные в файл журнала, теряются во время копирования.

Я смотрел файл logrotate для couchdb, и в нем были copytruncate и delaycompress параметры.

/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
   weekly
   rotate 10
   copytruncate
   delaycompress
   compress
   notifempty
   missingok
}

Похоже, нет смысла использовать delaycompress когда copytruncate уже есть. Что мне не хватает?

Ваше понимание copytruncate правильно, но формулировка на странице руководства для delaycompress немного вводит в заблуждение. Точнее, он должен сказать «когда некоторая программа не может быть немедленно закрыть его файл журнала »- например, если вы используете общие сценарии, и сценарий отправляет сигнал процессу, используя журнал, когда все файлы журнала были повернуты.

Не уверен, что я полностью понимаю ваш вопрос, но если вы спрашиваете, что я думаю ... Я использую это:

postrotate
          killall -HUP syslog-ng
  endscript

Это хороший (или, по крайней мере,) способ убить журнал и перейти к следующему. Для «отстойных» программ, таких как платформа Cisco ASA, регистрирующая тонны данных в секунду, это работает.

Мы используем:

  • ежедневно
  • задержка сжатия
  • nodateext

Это создает фиксированную копию apache access_log access_log.1 чтобы в конце дня мы могли запустить наш пакет Stats как скрипт.

На следующий день logrotate сжимает файл, создавая access_log.2.zip