Ротация логов 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, то пишите в комментариях!

Связанные статьи:

  • Удалённый просмотр и поиск по логам Apache в Windows (модуль mod_view) (100%)
  • Почему в логах ошибок Apache не сохраняются записи об ошибке 404 (83.2%)
  • Apache log (логи): как настроить и анализировать журналы веб-сервера (77.7%)
  • Как ограничить пропускную способность Apache на Windows для IP и отдельных файлов (74.9%)
  • Модуль Apache mod_alias (74.9%)
  • Окно Apache появляется и сразу пропадает (РЕШЕНО) (RANDOM — 52.5%)

Так как я месяцами не лезу в сервер он должен обслуживать себя сам
Тоесть за время работы сервера наростают большие файлы логов apache

Возник вопрос — как эти логи автоматически заканчивать и начинать новые логи каждый месяц?

Речь идет про apache на windows системе, что актуально для маленьких домашних серверов

Действия:

1. Установив апач идем в папку в которую установили его
пример — C:\apache22

2. Находим там папку bin, открываем её и проверяем есть ли файл — rotatelogs.exe
пример — C:\apache22\bin\rotatelogs.exe

3. Файл есть. Переходим в папку где конфигурационный файл апача (httpd.conf) и открываем его в текстовом редакторе
пример — c:\apache22\conf\httpd.conf

4. Отключаем функцию ведения логов знаком — #
пример — # CustomLog «logs/access.log» combinedio

5. В конце файла httpd.conf пишем:
пример — TransferLog «|C:/apache22/bin/rotatelogs.exe C:/apache22/logs/access 86400»

где — |C:/apache22/bin/rotatelogs.exe — путь до программы

C:/apache22/logs/access — папка где будут создаваться логи и их название

86400 — секунды. Через сколько секунд будет создаваться новый логфайл

6. Сохраняем файл httpd.conf и перезапускаем апач

Итог:
В папке которую мы указали будут создаваться новые файлы каждые 24 часа. Где название файла до точки мы указывали сами, а после точки идет время создания

пример:
access.1250368500
access.1250369000

Вот так очень легко мы избавились от больших файлов и разложили их по суткам
(c)KOCTEK

Тут опишу два способа ротации логов.

СПОСОБ РАЗ

1) Качаем модуль ротации от сюда http://www.apachelounge.com/download/ (под вашу разрядность Apache)

AL001

2) Копируем из архива файл mod_log_rotate.so в каталог с модулями Apache (обычно это подкаталог modules)

3) В файл httpd.conf добавляем строку LoadModule log_rotate_module modules/mod_log_rotate.so

4)  В файл httpd.conf добавляем строку RotateLogs On

5)  В файл httpd.conf добавляем строку RotateLogsLocalTime On

6) По желанию добавляем в файл httpd.conf добавляем строку RotateInterval указываем значение в секундах через которое будут создаваться новые файлы логов. По умолчанию используется значение 86400 то есть один день. Если эту строчку не указать, то будет использовано значение по умолчанию. Минимальное значение 60 секунд.

7) В файле httpd.conf изменяем строку создания файла логов доступа. Например на такую: «E:/iLogs/access %Y.%m.%d %B %H-%M-%S.log» combinedio

То же самое проделываете для всех ваших логов доступа (access.log) на виртуальных хостингах. Иначе к их названию просто прилепиться случайное число.

8) Перезапускаем Apache

P.S. mod_log_rotate 1.00a for Apache 2.4 Win64 VC14 работает только для логов доступа. Для логов ошибок он не работает.

СПОСОБ ДВА

При помощи утилиты – rotatelogs.

Rotatelogs — небольшая утилита в составе APACHE, позволяющая осуществлять ротацию логов по времени и по размеру.

rotatelogs [ -l ] [ -f ] logfile rotationtime|filesizeM [ offset ]

-l — Использовать локальное время

-f — Открыть новый файл немедленно, не дожидаясь добавления в него записи

logfile — путь и базовое название лога. Допускается использование модификаторов имени файла (ниже)

rotationtime — время ротации в секундах

filesizeM — максимальный размер лога в мегабайтах

offset — смещение во времени в минтах

Примеры для APACHE под WINDOWS

Внимание!!!! надо указывать либо полный путь к утилите rotatelogs либо отностительный, а так же файлу логов.

CustomLog «|C:/bin/rotatelogs.exe C:/var/logs/logfile 86400″ common

CustomLog «|bin/rotatelogs.exe -l C:/var/logs/logfile.%Y.%m.%d 86400″ common

CustomLog «|C:/bin/rotatelogs.exe C:/var/logs/logfile 5M» common

ErrorLog «|C:/bin/rotatelogs.exe C:/var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M»

Модификаторы названия файла

%A full weekday name (localized)

%a 3-character weekday name (localized)

%B full month name (localized)

%b 3-character month name (localized)

%c date and time (localized)

%d 2-digit day of month

%H 2-digit hour (24 hour clock)

%I 2-digit hour (12 hour clock)

%j 3-digit day of year

%M 2-digit minute

%m 2-digit month

%p am/pm of 12 hour clock (localized)

%S 2-digit second

%U 2-digit week of year (Sunday first day of week)

%W 2-digit week of year (Monday first day of week)

%w 1-digit weekday (Sunday first day of week)

%X time (localized)

%x date (localized)

%Y 4-digit year

%y 2-digit year

%Z time zone name

%% literal `%’

Вторым способом можно ротировать и логи ошибок. Но он не позволить использовать пробелы между модификаторами.

Можно одновременно использовать оба метода. Например первый для логов доступа, а второй для лога ошибок.

Либо же только второй для обоих логов.

Возможно в будущем, первым способом можно будет ротировать и логи ошибок.

P.S. Если время ротации логов задано по умолчанию, то во времени %H%M%S всегда будут нули.

By default, access requests, errors, and some other segmented data, is written into separate log files, which are not rotated by Apache.

These log files grow in size as new log data is appended with each additional access request made. And it’s left to the user to (once in a while) stop Apache, and rotate (i.e., rename) or delete the log files, so everything starts from size-zero again.

To automatically rotate a website’s access.log (and other log files such as the error.log) every 24 hours (daily), Apache’s included rotatelogs.exe tool can be used.

Example configuration:

ErrorLog "|bin/rotatelogs.exe -l #PATH_TO_ERROR_FILE%/errorlog.%Y-%m-%d.txt 86400"
CustomLog "|bin/rotatelogs.exe -l #PATH_TO_ACCESS_FILE%/accesslog.%Y-%m-%d.txt 86400" combinedtrueout_host

Using the Uniform Server to run Apache on Windows. Here is a simple way to implement log rotation using a batch file with Robocopy.

The script creates a date-named folder, then stops Apache, moves all the log files to the new folder, then restarts Apache.

I wanted to keep it simple, so there is no compression or purging of old logs, just a simple system to keep the log files from getting large. It is run once a week from a scheduled task.

set folder=%date:~10,4%_%date:~4,2%_%date:~7,2%
mkdir D:\data\rotatelogs\%folder%
net stop us_apache_1
robocopy D:\data\UniServerZ\core\apache2\logs\ D:\data\rotatelogs\%folder%\ *.log /MOV
net start us_apache_1

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Энергосбережение windows 10 как отключить режим энергосбережения
  • Генерация ssh ключа для gitlab windows
  • Удалить onedrive windows 10 командная строка
  • 0x800706b5 код ошибки в windows 10 как исправить
  • Как правильно очистить папку temp в windows 10