Страница руководства 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
вместе сcopytruncate
?copytruncate
если вам абсолютно не нужно, потому что он теряет записи журнала. Вы можете использовать оба варианта, если вам нужна другая функция, котораяdelaycompress
предоставляет - возможность читать предыдущий файл журнала без необходимости сначала распаковывать его.copytruncate
если я не могу сказать, чтобы моя программа перезагрузилась?Не уверен, что я полностью понимаю ваш вопрос, но если вы спрашиваете, что я думаю ... Я использую это:
Это хороший (или по крайней мере) способ убить журнал и перейти к следующему. Для «отстойных» программ, таких как платформа Cisco ASA, которая регистрирует тонны данных в секунду, это работает.
источник
Мы используем:
Это создает фиксированную копию apache,
access_log
access_log.1
чтобы мы могли в конце дня запустить наш пакет Stats как скрипт.На следующий день logrotate сжимает файл, создавая
access_log.2.zip
источник