首页主机资讯Tomcat日志格式详解

Tomcat日志格式详解

时间2025-10-03 01:23:03发布访客分类主机资讯浏览1516
导读:Tomcat日志类型概述 Tomcat的日志主要分为两类:服务器运行日志(记录Tomcat自身启动、停止及全局事件)和访问日志(记录客户端对Web应用的请求详情)。其中,服务器运行日志又细分为catalina(核心运行日志)、localho...

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

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

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Tomcat日志格式详解
本文地址: https://pptw.com/jishu/717927.html
Tomcat日志中的异常信息处理 Ubuntu挂载时显示只读怎么办

游客 回复需填写必要信息