You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat 7中如何将version.jsp调用日志分离至独立日志文件?

在Tomcat 7中单独记录version.jsp的访问日志

当然可以解决这个问题!Tomcat 7的AccessLogValve支持通过条件表达式过滤请求,你只需要在server.xml里配置两个日志阀门:一个负责记录除version.jsp外的所有请求(保留原有主访问日志),另一个专门把version.jsp的请求写入独立日志文件。

具体操作步骤

  1. 打开Tomcat安装目录下的conf/server.xml,找到<Host>节点下原有的AccessLogValve配置(就是生成默认access.log的那个)。

  2. 修改原有阀门,添加条件过滤掉version.jsp的请求:

    <Valve className="org.apache.catalina.valves.AccessLogValve"
           directory="logs"
           prefix="localhost_access_log"
           suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b"
           condition="%{REQUEST_URI} != '/version.jsp'" />
    

    注意:如果你的version.jsp在特定应用上下文路径下(比如/myapp/version.jsp),记得把/version.jsp替换成完整的请求路径。

  3. 在同一个<Host>节点下,新增一个专门的AccessLogValve,只记录version.jsp的请求:

    <Valve className="org.apache.catalina.valves.AccessLogValve"
           directory="logs"
           prefix="version_jsp_access_log"
           suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b"
           condition="%{REQUEST_URI} == '/version.jsp'" />
    

    这里的prefix可以自定义,比如叫health_check_log,方便你一眼认出这是健康检查的专属日志。

  4. 保存server.xml,重启Tomcat服务即可生效。

额外实用技巧

  • 如果需要匹配带参数的version.jsp请求(比如/version.jsp?foo=bar),可以用contains函数来写条件:
    condition="%{REQUEST_URI}.contains('/version.jsp')"
    
  • 如果你使用了Tomcat的虚拟主机配置,要确保这两个阀门都添加到对应的<Host>节点下。
  • 日志文件会自动按日期滚动(默认行为),无需额外配置滚动策略。

这样配置后,负载均衡器调用version.jsp的请求会单独写入version_jsp_access_log.*.txt,其他正常请求依然保留在原有的主日志文件中,完美解决主日志被健康检查请求充斥的问题!

内容的提问来源于stack exchange,提问作者Mohl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:40:27