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

Apache LogoНедавно вышел небольшой конфуз. Перестал работать 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Мб. Ну и конец имени файла для идентификации меняем на понятный временной формат.

8 thoughts on “Apache: ротация логов

  1. logrotate это ж как бы стандартная приблуда для любого сервера

    про .exe я какбе умолчу

  2. я какбэ умолчу, что я с виндами работаю, а без .exe logrotate на виндовом сервере пахать не будет =)
    вообще странно, что по умолчанию ротация логов в апаче выключена. тот же IIS всегда делает новые лог-файлы раз в сутки.

  3. Это очень полезная информация для меня. На других сайтах предлагают создавать дополнительное ПО под эту задачу, а здесь именно то что нужно и всё понятно. Автору огромное спасибо!

  4. С такими параметрами, апач не стартует почему то. Не подскажите в чем дело?

  5. winuser,

    Такая же капуста была. Покопал и нашел – в кастом-лог после времени и кавычки нужно не зыбывать аргумент common. Он вроде как обязателен. Без него в логах Виндовс такая ерунда:

    The Apache service named reported the following error:
    >>> CustomLog takes two or three arguments, a file name, a custom log format string or format name, and an optional “env=” or “expr=” clause (see docs) .

Leave a Reply

Your email address will not be published. Required fields are marked *