Apache SetEnvIf / CustomLog 日志过滤不起作用

Apache SetEnvIf / CustomLog 日志过滤不起作用

我很难尝试从 Apache 访问日志中排除一些行。

我使用的是 Apache Windows 2.4.25 64 位

我试过:

SetEnvIf Request_URI ".*" dontlog
LogFormat  "%{%d/%m/%y %H:%M:%S}t [%h %{tid}P] %>s \"%r\" (%bb/%Dmis)" common
CustomLog "${LOGROOT}/ApacheAccess.log" common env=!dontlog

运行良好-access.log 中没有记录任何内容

但是如果我尝试同样的事情:

SetEnvIf Request_URI ".*Check.*" dontlog

它似乎被忽略了,即我得到了如下的行:

29/11/19 13:43:51 [127.0.0.1 15896] 200 “GET /zerofp/server?检查 HTTP/1.1”(17b/177042mis)

我错过了什么?如何正确过滤行?

答案1

好的,这不起作用的原因是因为Request_URI它不包含查询字符串,所以正则表达式永远不会匹配。

具体操作如下:

# Set the "dontlog" environment variable when the query string matches one of multiple patters to filter out access.log

RewriteCond %{THE_REQUEST} ".*?Check.*" [OR]
RewriteCond %{THE_REQUEST} ".*someothercond*" 
RewriteRule .* - [E=dontlog:yes] 

LogFormat  "%{%d/%m/%y %H:%M:%S}t %r" common
CustomLog "${LOGROOT}/ApacheAccess.log" common env=!dontlog

相关内容