linux

Tomcat日志格式详解

小樊
45
2025-09-28 07:22:05
栏目: 智能运维

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(单行输出)。自定义格式需使用占位符,以下为核心占位符说明及示例:

默认格式示例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格式):

<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

三、日志格式配置注意事项

  1. 性能权衡:自定义格式中避免使用高开销的变量(如%{User-Agent}i),频繁记录大字段会增加I/O负载;
  2. 敏感信息保护:避免在日志中记录用户密码、银行卡号等敏感信息,可通过正则过滤或脱敏处理;
  3. 日志滚动:通过logging.properties中的FileHandler.limit(文件大小,如50000字节)和FileHandler.count(保留文件数,如10个)配置日志滚动,防止单个日志文件过大;
  4. 生效方式:修改配置后需重启Tomcat(./bin/shutdown.sh && ./bin/startup.sh)使配置生效。

0
看了该问题的人还看了