Tomcat 的日志格式修改,主要取决于你想改的是哪一类日志。Tomcat 常见日志有三类:
下面分别说明。
这是最常用的修改场景,比如改成 JSON、增加响应时间等。
conf/server.xml
通常在 <Host> 标签中:
<Host name="localhost" appBase="webapps">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
✅ 默认格式
pattern="%h %l %u %t "%r" %s %b"
✅ Apache 常见格式
pattern="combined"
✅ JSON 格式(推荐用于日志采集)
pattern="{"client":"%h","time":"%t","method":"%r","status":"%s","size":"%b","referer":"%{Referer}i","ua":"%{User-Agent}i"}"
✅ 增加响应时间
pattern="%h %l %u %t "%r" %s %b %D"
%D:请求耗时(毫秒)
| 字段 | 含义 |
|---|---|
%h |
客户端 IP |
%u |
用户 |
%t |
时间 |
%r |
请求(方法 + URL + 协议) |
%s |
HTTP 状态码 |
%b |
响应字节数 |
%D |
请求耗时(ms) |
%T |
耗时(秒) |
%{header}i |
请求头 |
%{header}o |
响应头 |
修改后 重启 Tomcat 生效。
catalina.out 是 标准输出/错误配置文件:
conf/logging.properties
示例:
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
OneLineFormatter 输出示例:
2026-01-21 10:00:00.123 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization
⚠️ 注意:
catalina.out 本身 不能自定义格式<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1} - %m%n"/>
<pattern>
%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n
</pattern>
✅ 可以控制:
| 需求 | 改哪里 |
|---|---|
| 访问日志格式 | server.xml → AccessLogValve |
| 访问日志 JSON 化 | pattern 改成 JSON |
| catalina.out 格式 | logging.properties |
| 应用日志格式 | log4j2 / logback |
| 增加请求耗时 | %D 或 %T |
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="access_log"
suffix=".log"
pattern="%h %{X-Forwarded-For}i %t "%r" %s %b %D "%{User-Agent}i""
resolveHosts="false" />
如果你愿意,可以告诉我:
我可以直接给你一份可直接复制的配置。