Subscribe on YouTube

Ротация логов

Ротация лог-файлов для веб-сервера Apache, либо любой другой службы которая создает логи.

Ротацию логов я буду осуществлять с помощью logrotate, конфигурационный файл которого расположен в: /etc/logrotate.conf

/var/log/httpd/error_log #(полный путь для лог-файла)
{
rotate 5 #(кол-во хранимых сжатых фрагментов)
size=10M #(максимальный размер несжатого файла (в мегабайтах).
#Пока размер текущего файла журнала не превысит данный порог,
#файл не будет "ротирован")
missingok #(отсутствие файла не является ошибкой)
nocopytruncate #(не сбрасывать файл журнала после копирования)
nocreate #(не создавать пустой журнал)
nodelaycompress #(не откладывать сжатие файла на следующий цикл)
nomail #(не отправлять содержимое удаляемых журналов по почте)
notifempty #(не обрабатывать пустые файлы)
noolddir #(держать все файлы в одном и том же каталоге)
compress #(сжимать ротируемые фыйлы)
postrotate
/usr/bin/killall -HUP httpd
endscript #(между postrotate и endscript расположены команды
#интерпретатора исполняемые непосредственно после ротации.
#В данном случае сюда помещена команда killall,
#перезапускающая httpd-сервер.Это необходимо для нормальной процедуры ротации лог-файлов)
}/var/log/httpd/access_log #(полный путь для лог-файла)
{
rotate 4
weekly #(производить ротацию регулярно, раз в неделю)
missingok
nocopytruncate
nocreate
nodelaycompress
nomail
notifempty
noolddir
compress
postrotate
/usr/bin/killall -HUP httpd
endscript
}

Как вы можете видеть в блоке где происходит ротация error_log, момент ротации наступает по достижению размера в 5 Мегабайт.
Напротив, в блоке access_log ротация будет происходить раз в неделю, либо если раз в месяц (вместо weekly, ставим – monthly).

Ротация файлов может происходить как вручную с помощью команды:

/usr/sbin/logrotate –s /var/log/logrotate.state /etc/logrotate.conf

Либо с помощью планировщика заданий Cron:

* 22 * * * /usr/sbin/logrotate –s /var/log/logrotate.state /etc/logrotate.conf
Поделиться Комментарии