В данной статье мы рассмотрим как установить и настроить плагин mod_log_rotate, который служит для ротации логов на рабочем сервере.
С помощью этого плагина мы сможем в Apache в 2.4 под Windows настроить автоматическую чистку логов со временем.
Файл данного плагина не входит в стандартный набор Apache, но команда apachelounge компилирует его для Windows. Перейдите на сайт https://www.apachelounge.com/download/, найдите и скачайте файл mod_log_rotate:
Распакуйте архив и поместите файл mod_log_rotate.so в папку modules, если вы устанавливали по этой инструкции, то это папка C:\Server\bin\Apache24\modules\.
Для включения этого модуля, добавьте в ваш конфигурационный файл httpd.conf (C:\Server\bin\Apache24\conf\httpd.conf) строки:
LoadModule log_rotate_module modules/mod_log_rotate.so RotateLogs On
Чтобы изменения вступали в силу, не забывайте при каждом изменении конфигурационного файла httpd.conf перезапускать веб-сервер!
c:\Server\bin\Apache24\bin\httpd.exe -k restart
Интервал ротации логов по умолчанию установлен на 86400 секунд (это один день). С помощью директивы
RotateInterval ИНТЕРВАЛ
можно установить другой интервал ротации в секундах. Самый короткий интервал, который может быть установлен, равен 60 секундам.
Обычно интервал ротации журнала основан на UTC. Например, интервал 86400 (один день) приведёт к ротации журналов в UTC 00:00.
С помощью следующей директивы вы можете сделать так, чтобы ротация журналов происходила по местному времени:
RotateLogsLocalTime on
У директивы RotateInterval может быть альтернативная опция:
RotateInterval ИНТЕРВАЛ СДВИГ
Она указывает смещение времени ротации журналов веб сервера. Например:
RotateInterval 86400 60
приведёт к тому, что логи будут ротироваться в 23:00 UTC.
Теперь в качестве имени для настраиваемого лога можно указать дату в формате strftime(). К примеру вы можете сделать что-то вроде такого:
CustomLog logs/access_log.%Y%m%d-%H%M%S common
И в результате у вас будут логи с понятным для человека датой и временем создания.
Внимание
После включения mod_log_rotate, этот модуль отвечает за весь вывода журнала веб сервера, даже если впоследствии используется RotateLogs Off.
Это означает, что директива BufferedLogs, которая реализуется mod_log_config, будет игнорироваться.
Поскольку BufferedLogs не документирована и помечена как экспериментальная функция, это не должно быть проблемой в производственных средах.
Альтернатива для rotatelogs
Использование модуля mod_log_rotate является альтернативой для поставляемой с Apache программы rotatelogs. Если вы не хотите устанавливать дополнительный модуль, то используйте rotatelogs (документация). Если вам нужна инструкция по rotatelogs, то пишите в комментариях!
Связанные статьи:
- Удалённый просмотр и поиск по логам Apache в Windows (модуль mod_view) (100%)
- Почему в логах ошибок Apache не сохраняются записи об ошибке 404 (83.2%)
- Apache log (логи): как настроить и анализировать журналы веб-сервера (77.7%)
- Как ограничить пропускную способность Apache на Windows для IP и отдельных файлов (74.9%)
- Модуль Apache mod_alias (74.9%)
- Как и какие функции отключить в PHP (RANDOM - 55.6%)
Спасибо. mod_log_rotate затрагивает как и access.log так и error.log?
Нет, с логом ошибок этот модуль не работает. Если интересно почему: ошибки могут быть такими, что аварийно завершится процесс сервера, по этой причине, например, ошибки не буферизируются (выводятся сразу). По этой причине в Linux различают «стандартный вывод» и «стандартный вывод ошибок» - оба выводятся в консоль, но второй также не буферизируется. То есть ошибки выводятся сразу как только возникли, не надеясь, что процесс Apache, а уж тем более какой-то модуль, переживут эту ошибку.
Тем не менее с использованием внешней программы можно управлять и журналом ошибок (если Apache вылетит, внешняя программа всё равно обработает полученную информацию). В частности это умеет упомянутая в инструкции программа rotatelogs (в Windows это rotatelogs.exe).
Я подготовлю инструкцию по rotatelogs и покажу как можно ротировать логи ошибок.
Спасибо буду крайне признателен за Вашу инструкцию по rotatelogs