Tomcat日志格式详解
Tomcat日志类型概述
Tomcat的日志主要分为两类:服务器运行日志(记录Tomcat自身启动、停止及全局事件)和访问日志(记录客户端对Web应用的请求详情)。其中,服务器运行日志又细分为catalina
(核心运行日志)、localhost
(应用初始化异常)、manager
(管理接口日志)、host-manager
(虚拟主机管理日志)等类别,均通过conf/logging.properties
配置;访问日志则通过conf/server.xml
中的AccessLogValve
配置。
一、服务器运行日志格式(logging.properties配置)
服务器运行日志的格式通过logging.properties
中的formatter
属性定义,常用格式化类为java.util.logging.SimpleFormatter
(默认)或org.apache.juli.OneLineFormatter
(单行输出)。自定义格式需使用占位符,以下为核心占位符说明及示例:
- 时间信息:
%1$tY
(4位年份)、%1$tm
(2位月份)、%1$td
(2位日期)、%1$tH
(24小时制小时)、%1$tM
(分钟)、%1$tS
(秒); - 日志级别:
%4$s
(如INFO、ERROR,左对齐占4位); - 线程信息:
%5$s
(线程名称); - 类名:
%2$s
(日志记录器名称,通常为类全路径); - 日志消息:
%6$s
(实际日志内容); - 换行符:
%n
(适配操作系统)。
默认格式示例(java.util.logging.SimpleFormatter
):
2025-09-28 10:30:45 INFO com.example.web.MyController - User login successful
自定义配置示例(单行输出,包含时间、级别、类名、消息):
修改logging.properties
中的java.util.logging.ConsoleHandler.formatter
:
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s %2$s %5$s - %6$s%n
效果:2025-09-28 10:30:45 INFO com.example.web.MyController - User login successful
。
二、访问日志格式(server.xml配置)
访问日志通过server.xml
中的AccessLogValve
配置,用于记录客户端请求的详细信息(如IP、方法、URL、状态码等)。其格式由pattern
属性定义,支持预定义别名和自定义项:
- 预定义别名:
common
:基础格式(%h %l %u %t "%r" %s %b
),包含远程主机、用户、时间、请求行、状态码、发送字节数;combined
:扩展格式(common
+%{ Referer} i
+%{ User-Agent} i
),增加了Referer(来源页面)和User-Agent(客户端浏览器信息)。
- 自定义项:
- 基础变量:
%h
(远程主机IP)、%l
(远程用户名,始终为-
)、%u
(认证用户,无则为-
)、%t
(时间,Common Log Format格式)、%r
(请求行,如GET /index.html HTTP/1.1
)、%s
(HTTP状态码)、%b
(发送字节数,不含HTTP头,0则显示-
)、%T
(处理时间,秒)、%D
(处理时间,毫秒); - 请求头:
%{ HeaderName} i
(如%{ User-Agent} i
获取客户端浏览器信息); - Cookie:
%{ CookieName} c
(如%{ JSESSIONID} c
获取会话ID); - Session属性:
%{ AttributeName} s
(如%{ userId} s
获取Session中的用户ID); - Servlet属性:
%{ AttributeName} r
(如%{ requestId} r
获取ServletRequest中的属性)。
- 基础变量:
默认配置示例(common
格式):
<
Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log."
suffix=".txt"
pattern="common"
resolveHosts="false"/>
效果:192.168.1.100 - - [28/Sep/2025:10:30:45 +0800] "GET /index.html HTTP/1.1" 200 1024
自定义配置示例(包含IP、时间、方法、URL、状态码、处理时间、Referer、User-Agent、手机号):
<
Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="access_log."
suffix=".log"
pattern="%h %t %m %U %s %D %{
Referer}
i %{
User-Agent}
i MSISDN=%{
x-up-calling-line-id}
i"
resolveHosts="false"/>
效果:192.168.1.100 [28/Sep/2025:10:30:45 +0800] GET /login.jsp 200 500 "https://example.com/home" "Mozilla/5.0 (Windows NT 10.0;
Win64;
x64)" MSISDN=13800138000
。
三、日志格式配置注意事项
- 性能权衡:自定义格式中避免使用高开销的变量(如
%{ User-Agent} i
),频繁记录大字段会增加I/O负载; - 敏感信息保护:避免在日志中记录用户密码、银行卡号等敏感信息,可通过正则过滤或脱敏处理;
- 日志滚动:通过
logging.properties
中的FileHandler.limit
(文件大小,如50000字节)和FileHandler.count
(保留文件数,如10个)配置日志滚动,防止单个日志文件过大; - 生效方式:修改配置后需重启Tomcat(
./bin/shutdown.sh & & ./bin/startup.sh
)使配置生效。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Tomcat日志格式详解
本文地址: https://pptw.com/jishu/717927.html