Как в Apache под Windows настроить автоматическую ротацию и очистку логов

В данной статье мы рассмотрим как установить и настроить плагин 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, то пишите в комментариях!


Comments

    1. Нет, с логом ошибок этот модуль не работает. Если интересно почему: ошибки могут быть такими, что аварийно завершится процесс сервера, по этой причине, например, ошибки не буферизируются (выводятся сразу). По этой причине в Linux различают «стандартный вывод» и «стандартный вывод ошибок» - оба выводятся в консоль, но второй также не буферизируется. То есть ошибки выводятся сразу как только возникли, не надеясь, что процесс Apache, а уж тем более какой-то модуль, переживут эту ошибку.

      Тем не менее с использованием внешней программы можно управлять и журналом ошибок (если Apache вылетит, внешняя программа всё равно обработает полученную информацию). В частности это умеет упомянутая в инструкции  программа rotatelogs (в Windows это rotatelogs.exe).

      Я подготовлю инструкцию по rotatelogs и покажу как можно ротировать логи ошибок.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

wp-puzzle.com logo