22.12. Ведение отдельных журналов для виртуальных хостов
Проблема
При интенсивной работе с несколькими виртуальными хостами общее логирование может затруднять мониторинг отдельных сайтов, так как все записи попадают в один файл журнала. Чтобы упростить анализ и улучшить контроль над данными, каждый виртуальный хост можно настроить на ведение собственного журнала.
Решение
Чтобы назначить отдельные файлы журналов для каждого виртуального хоста, отредактируйте файл конфигурации httpd.conf
. Ниже приведён пример настройки для одного из виртуальных хостов:
<VirtualHost *:80>
ServerName www.tuxcomputing.com
ServerAlias tuxcomputing.com *.tuxcomputing.com
DocumentRoot /var/www/tuxcomputing
ErrorLog /var/www/tuxcomputing/logs/error.log
CustomLog /var/www/tuxcomputing/logs/access.log combined
ServerAdmin admin@tuxcomputing.com
</VirtualHost>
В этом примере каждому виртуальному хосту задаются отдельные файлы для логов ошибок (ErrorLog
) и для обращений (CustomLog
), что позволяет отдельно отслеживать ошибки и обращения пользователей для конкретного хоста. Формат журнала обращений (CustomLog
) указан как combined
, что предоставляет расширенную информацию о запросах.
Директивы LogFormat и настройка форматов логов
В файле httpd.conf
Apache включает несколько предустановленных форматов логов с использованием директивы LogFormat
. Вот основные форматы:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
Директива combined
предоставляет полную информацию, включая данные о реферере и агенте пользователя, что полезно для анализа источников трафика и типов устройств. Формат common
содержит базовую информацию о запросах, а форматы referer
и agent
фокусируются на специфических данных, таких как источники переходов и идентификатор клиента.
Если стандартные форматы не подходят для ваших нужд, вы можете определить собственный формат, используя доступные переменные. Полный список доступных переменных для настройки логов находится в официальной документации Apache:
Примеры пользовательских форматов логов
Создание собственных форматов позволяет адаптировать журнал под ваши требования. Например, можно создать журнал, отслеживающий только определённые данные, такие как IP-адрес, время запроса и тип используемого устройства:
LogFormat "%h %t \"%{User-Agent}i\"" custom_device_log
CustomLog /var/www/tuxcomputing/logs/device.log custom_device_log
В этом примере лог будет записывать IP-адрес, время запроса и только данные о типе устройства, указанного в заголовке User-Agent. Это может быть полезно для анализа типов устройств, используемых вашими посетителями.
Практическое применение ведения отдельных журналов
Разделение логов для виртуальных хостов упрощает обнаружение и устранение проблем. Вы можете более точно определить, на каких сайтах возникают ошибки или высокая нагрузка, что улучшает общую управляемость сервера. Это особенно актуально для хостинг-провайдеров и администраторов, которые обслуживают несколько сайтов на одном сервере.
См. также