Apache: ротация логов

Недавно вышел небольшой конфуз. Перестал работать SVN-сервер. При первом осмотре оказалось, что отключился сервис Apache. После его запуска работа SVN продолжилась. При более детальном изучении проблемы, оказалось, что один из лог-файлов достиг размера 4Гб. При попытке пересоздать лог-файл сервис Apache

остановился и не запустился. Возникла проблема с тем, как ограничить рост логов Apache. При небольшом изучении вопроса решение было найдено достаточно быстро. В комплекте с Apache идёт утилита rotatelogs.exe, которая позволяет пересоздавать логи при выполнении некоторого критерия. Критерием может служить время и размер файла с логами. Для выполнения ротации логов достаточно изменить файл конфигурации Apache – httpd.conf. Вместо

ErrorLog » logs/error.log»

Используем

ErrorLog «|bin/rotatelogs.exe logs/error.log.%Y-%m-%d 86400»

Вместо

CustomLog «logs/access.log»

Используем

CustomLog «|bin/rotatelogs.exe logs/access.log.%Y-%m-%d 86400»

86400 указывает количество секунд через которое будет пересоздаваться лог-файл (то есть раз в сутки). Вместо времени можно было указать по достижении какого размера (в мегабайтах) файл должен быть пересоздан. Например при 5М файл будет пересоздаваться при достижении 5Мб. Ну и конец имени файла для идентификации меняем на понятный временной формат.

Share