По умолчанию сервер Apache записывает в журнал все запросы, которые он получает. Но это может загромождать ваши файлы журнала ненужными записями о изображениях, иконках, шрифтах, css, js и т.д. Иногда лучше исключить запросы из журнала Apache, чтобы отключить ведение журнала для них. Это устраняет беспорядок в лог-файлах и облегчает отладку. В этой статье мы узнаем, как исключить запросы из журнала Apache.
Как исключить запросы из журнала Apache
Ниже описаны шаги по исключению запросов из журнала Apache. В основном мы будем использовать директиву SetEnvIf для установки флагов для каждого типа запросов, которые мы хотим исключить из журнала. Например, если вы хотите исключить из журнала запросы изображений, откройте файл конфигурации Apache в текстовом редакторе.
1 2 | nano /etc/httpd/conf/httpd.conf |
Добавьте в него следующую строку.
1 | SetEnvIf Request_URI "(\.gif|\.png|\.jpg)$" image-request=nolog |
Далее мы проверяем значение флага image-request для каждого запроса и устанавливаем флаг do_not_log, если его флаг image_request имеет значение nolog.
1 | SetEnvIf image-request nolog do_not_log |
Наконец, мы регистрируем запрос только в том случае, если для него не установлен флаг do_not_log.
1 | CustomLog /var/www/log/general-access.log vcommon env=!do_not_log |
Подводя итог, вот 3 записи, необходимые для отключения ведения журнала для запросов изображений.
1 2 3 | SetEnvIf Request_URI "(\.gif|\.png|\.jpg)$" image-request=nolog SetEnvIf image-request nolog do_not_log CustomLog /var/www/log/general-access.log vcommon env=!do_not_log |
Теперь вы можете использовать эту же технику, чтобы установить флаги для каждого типа запросов, проверить их значение и установить флаг do not только для этих запросов. Вот пример исключения из журнала различных типов файлов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ## флаг запросов robots.txt SetEnvIf Request_URI "^/robots\.txt$" robots-request=nolog ## флаг запросов фавикона SetEnvIf Request_URI "^/favicon\.ico$" favicon-request=nolog ## флаг запросов изображений SetEnvIf Request_URI "(\.gif|\.png|\.jpg)$" image-request=nolog ## отметить запросы Css и JS SetEnvIf Request_URI \.css css-request=nolog SetEnvIf Request_URI \.js js-request=nolog ## флаг вызова cron SetEnvIf Request_URI "(^/cron\.php|^/bgp-start/)" cron-request=nolog ## установите do_not_log, если установлен любой из вышеперечисленных флагов SetEnvIf robots-request nolog do_not_log SetEnvIf favicon-request nolog do_not_log SetEnvIf image-request nolog do_not_log SetEnvIf css-request nolog do_not_log SetEnvIf js-request nolog do_not_log SetEnvIf cron-request nolog do_not_log ## ведение журнала только в том случае, если параметр do_not_log не установлен CustomLog /var/www/log/general-access.log vcommon env=!do_not_log |
В приведенном выше коде Apache проверяет каждый запрос на предмет необходимости установки для него флагов image-request, robots-request, favicon-request и т.д. Если для запроса установлен любой из этих флагов, то устанавливается флаг do_not_log. Наконец, мы используем директиву CustomLog, чтобы проверить, установлена ли переменная env в значение do_not_log. Если она установлена, то запрос не регистрируется.
После добавления вышеуказанных записей сохраните и закройте файл журнала. Перезапустите сервер Apache, чтобы применить изменения.
1 | service apache2 restart |
В этой статье мы узнали, как исключить определенные запросы из журнала Apache. Вы можете настроить его в соответствии с вашими требованиями.