温馨提示×

Tomcat访问日志如何开启

小樊
33
2026-07-13 09:00:15
栏目: 智能运维

Apache Tomcat 中,访问日志(Access Log)是通过 Valve 组件来开启的,最常用的是 AccessLogValve。下面按常见场景说明如何开启和配置。


一、开启 Tomcat 访问日志(最常用方式)

1. 找到配置文件

编辑 Tomcat 的 server.xml

$TOMCAT_HOME/conf/server.xml

2. 在 <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>

3. 重启 Tomcat

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)

1️⃣ 类似 Apache / Nginx 的 combined 格式

pattern="%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i""

2️⃣ 推荐生产环境格式(含响应时间)

pattern="%h %l %u %t "%r" %s %b %D"
  • %D:请求处理时间(毫秒)

四、访问日志输出位置

默认生成在:

$TOMCAT_HOME/logs/localhost_access_log.2026-01-21.txt

五、验证是否生效

  1. 访问应用:
    http://localhost:8080/
    
  2. 查看日志:
    tail -f logs/localhost_access_log.*.txt
    

六、常见问题

❓ 没有生成访问日志?

  • 确认 Valve 在 <Host>
  • 确认 Tomcat 已重启
  • 确认 logs 目录有写权限
  • 如果是 Spring Boot 内嵌 Tomcat,配置方式不同 ✅

七、Spring Boot 内嵌 Tomcat 开启访问日志(补充)

server:
  tomcat:
    accesslog:
      enabled: true
      directory: logs
      prefix: access_log
      suffix: .log
      pattern: "%h %l %u %t \"%r\" %s %b %D"

如果你愿意,可以告诉我:

  • 普通 Tomcat 还是 Spring Boot
  • 操作系统(Linux / Windows)
  • 是否需要 按小时 / 按大小滚动

我可以给你一份更精确的配置。

0