在 Apache Tomcat 中,访问日志(Access Log)是通过 Valve 组件来开启的,最常用的是 AccessLogValve。下面按常见场景说明如何开启和配置。
编辑 Tomcat 的 server.xml:
$TOMCAT_HOME/conf/server.xml
<Host> 节点中添加 AccessLogValve示例(默认 Tomcat 已注释或存在):
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- Access Log Valve -->
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
bin/shutdown.sh
bin/startup.sh
(Windows 使用 shutdown.bat / startup.bat)
| 参数 | 说明 |
|---|---|
directory |
日志存放目录(相对于 $CATALINA_BASE,一般是 logs/) |
prefix |
日志文件名前缀 |
suffix |
日志文件名后缀 |
pattern |
日志格式(非常重要) |
rotatable |
是否按天滚动(默认 true) |
fileDateFormat |
日志时间格式,如 yyyy-MM-dd |
pattern="%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i""
pattern="%h %l %u %t "%r" %s %b %D"
%D:请求处理时间(毫秒)默认生成在:
$TOMCAT_HOME/logs/localhost_access_log.2026-01-21.txt
http://localhost:8080/
tail -f logs/localhost_access_log.*.txt
<Host> 内logs 目录有写权限server:
tomcat:
accesslog:
enabled: true
directory: logs
prefix: access_log
suffix: .log
pattern: "%h %l %u %t \"%r\" %s %b %D"
如果你愿意,可以告诉我:
我可以给你一份更精确的配置。