【发布时间】:2019-05-13 09:34:30
【问题描述】:
我的 Tomcat 访问日志目前充斥着来自负载平衡器的运行状况检查请求,因此很难真正理解发生了什么。例如,使用 GoAccess 我可以看到一些误导性的统计数据:
Hits h% Vis. v% Bandwidth Mtd Proto Data
----- ------ ---- ----- ----------- --- -------- ----
46221 81.20% 2 0.02% 30.72 MiB GET HTTP/1.1 /geoserver/index.html
16 0.03% 1 0.01% 50.23 KiB GET HTTP/1.1 /geoserver/wms?SERVICE=WMS&VERSION=1.1.0&REQUEST=GetMap&FORMAT=image/jpeg.
16 0.03% 1 0.01% 338.80 KiB GET HTTP/1.1 /geoserver/wms?SERVICE=WMS&VERSION=1.1.0&REQUEST=GetMap&FORMAT=image/png.
日志是使用 Tomcat 的标准 Access Log Valve 创建的。阀门应该有一个参数,conditionUnless,我尝试使用它来消除对index.html 的所有请求(这是健康检查的地方,所以我可以安全地过滤掉所有这些请求) .
根据文档,conditionUnless:
打开条件日志记录。如果设置,请求将仅在以下情况下被记录
ServletRequest.getAttribute()是null。例如,如果此值为 设置为垃圾,则仅在以下情况下才会记录特定请求ServletRequest.getAttribute("junk") == null。过滤器的使用是 在许多 ServletRequest 中设置/取消设置属性的简单方法 不同的请求。
但我不知道如何使用过滤器过滤出所有对index.html 的请求并以某种方式标记它们。显然,server.xml 中的以下内容是不够的:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="/var/log/tomcat8/accesslogs"
prefix="node1" suffix=".log"
pattern="combined"
renameOnRotate="true"
conditionUnless="index.html" />
如何排除对index.html 的所有请求?
【问题讨论】: