我可以从 Apache 配置中写入我选择的日志输出(基于重写条件)吗?

我可以从 Apache 配置中写入我选择的日志输出(基于重写条件)吗?

我有一些内容只有通过 GeoIP 查询并符合特定国家/地区的用户才能访问。这是通过 mod_rewrite 完成的,而且运行良好。

我想做的是记录失败的尝试,以帮助调试那些应该能够获取此内容但无法获取的人。为了做到这一点,目前我需要将 RewriteLogLevel 设置为 4,这意味着虚拟主机上的所有内容都会被记录,而不仅仅是我限制的内容。

这是 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

答案1

有一个名为的模块mod_log_config其中有指令称为自定义日志日志格式. 基本上我们使用 LogFormat 定义输出格式并将其重定向到 CustomLog 中提到的文件。

相关内容