Назад | Перейти на главную страницу

Могу ли я записать вывод журнала по своему выбору из конфигурации Apache (на основе условий перезаписи)?

У меня есть контент, который доступен только людям, которые прошли поиск по GeoIP и соответствуют определенным странам. Это делается с помощью mod_rewrite, и все работает хорошо.

Что я хотел бы сделать, так это регистрировать неудачные попытки, чтобы помочь отладить людей, которые должны иметь возможность получить этот контент, но не могут. Для этого в настоящее время мне нужен RewriteLogLevel на уровне 4, что означает, что все на виртуальном хосте регистрируется, а не только то, что я ограничиваю.

Это пример из readme-файла mod_geoip:

GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$
RewriteRule \.(gif|jpg|png|css)$ - [L] # don't redirect images and stylesheets
RewriteRule ^(.*)$ http://www.canada.com [L] # redirect everything else

Я хотел бы добавить что-то вроде

WriteThisToLog "Denied access to $1 from IP $2 due to calculated country $3"

Есть все переменные - есть ли директива, которую я могу использовать для записи в журнал ошибок Apache?

Редактировать: Я бы поставил это в комментарии к правильному ответу, но форматирование было важно. Я закончил с этим:

RewriteRule ^(.*)$ http://www.canada.com [L,E=GEOIP_FAIL:1] # redirect everything else
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" GEOIP_COUNTRY_CODE=%{GEOIP_COUNTRY_CODE}e" geoip_fail_format
CustomLog /var/log/httpd/geoip_fail_log geoip_fail_format env=GEOIP_FAIL

Есть модуль под названием mod_log_config в котором есть директивы, называемые CustomLog и LogFormat. В основном мы определяем выходной формат с помощью LogFormat и перенаправляем его в файл, упомянутый в CustomLog.