APACHE2:如何为请求的特定目录写入日志?

APACHE2:如何为请求的特定目录写入日志?

我在虚拟主机中有此行:

CustomLog /var/log/access.log combined

但是我想要一个特定的日志来写入特定目录的每个请求

例如

我的公共目录中有以下子目录:

user@/var/www # ls
index.test  images/ test.php

当用户请求images目录内的任何文件时如何写入日志?

编辑:这样做的主要目的是防止主日志文件过大并简化搜索

答案1

您可以尝试设置环境变量。

例如。

SetEnvIf Request_URI ^/images(/|$) imageslog

CustomLog /var/log/images-access.log combined env=imageslog

第三个参数是可选的,它控制是否根据服务器环境中特定变量的存在与否来记录特定请求。如果为请求设置了指定的环境变量(或者在子句的情况下未设置 'env=!name'),则将记录该请求。

mod_setenvif可以使用and/or模块根据每个请求设置环境变量 mod_rewrite。例如,如果您想在单独的日志文件中(而不是在主日志中)记录服务器上所有 GIF 图像的请求,则可以使用:

SetEnvIf Request_URI \.gif$ gif-image
CustomLog gif-requests.log common env=gif-image
CustomLog nongif-requests.log common env=!gif-image

或者,为了重现旧 RefererIgnore 指令的行为,您可以使用以下命令:

SetEnvIf Referer example\.com localreferer
CustomLog referer.log referer env=!localreferer

也可以看看:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html

我希望这有帮助

相关内容