我在虚拟主机中有此行:
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
我希望这有帮助