怎样自定义Ubuntu Tomcat日志格式
自定义Ubuntu Tomcat日志格式的步骤
1. 区分日志类型:运行日志 vs 访问日志
Tomcat的日志主要分为两类:运行日志(记录应用运行状态、错误信息等,如catalina.out
)和访问日志(记录HTTP请求详情,如IP、URL、状态码等)。两者需分别配置:
- 运行日志:通过
conf/logging.properties
文件配置(适用于java.util.logging
框架); - 访问日志:通过
conf/server.xml
文件配置(使用AccessLogValve
组件)。
2. 自定义运行日志格式(logging.properties)
运行日志的默认格式由java.util.logging.SimpleFormatter
控制,可通过修改logging.properties
文件调整格式。
操作步骤:
-
打开配置文件:
Ubuntu下Tomcat的logging.properties
通常位于/etc/tomcatX/conf/
(X为版本号,如9、8)或/opt/tomcat/conf/
(手动安装路径)。使用文本编辑器(如nano
)打开:sudo nano /etc/tomcat9/conf/logging.properties
-
方式1:使用SimpleFormatter内置变量(推荐)
找到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
),替换为自定义格式。常用变量说明:%1$tY
:4位年份(如2025);%1$tm
:2位月份(如09);%1$td
:2位日期(如13);%1$tH
:24小时制的小时(如14);%4$s
:日志级别(如INFO、SEVERE);%2$s
:线程名(如http-nio-8080-exec-1);%5$s
:类名(如org.apache.catalina.core.StandardEngine);%6$s
:日志消息(如“Server startup in 1234 ms”)。
示例(包含日期、时间、级别、类名、消息):
java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS [%4$s] [%2$s] %5$s%n
-
方式2:自定义Formatter类(高级需求)
若内置变量无法满足需求(如添加固定前缀、格式化堆栈信息),可创建自定义类继承java.util.logging.Formatter
接口。- 编写Java类(如
CustomFormatter.java
):import java.util.logging.Formatter; import java.util.logging.LogRecord; public class CustomFormatter extends Formatter { @Override public String format(LogRecord record) { return String.format("[%1$tF %1$tT] [%2$s] [%3$s] - %4$s%n", new java.util.Date(record.getMillis()), // 日期时间 record.getLevel().getLocalizedName(), // 日志级别 record.getSourceClassName(), // 类名 record.getMessage() // 消息 ); } }
- 编译并放置到Tomcat的
lib
目录:javac -cp /usr/share/java/logging-api.jar CustomFormatter.java sudo cp CustomFormatter.class /etc/tomcat9/lib/
- 修改
logging.properties
引用自定义类:java.util.logging.ConsoleHandler.formatter = com.example.CustomFormatter
- 编写Java类(如
-
保存文件并重启Tomcat:
sudo systemctl restart tomcat9
3. 自定义访问日志格式(server.xml)
访问日志记录HTTP请求的详细信息(如IP、URL、状态码),通过server.xml
中的AccessLogValve
组件配置。
操作步骤:
-
打开
server.xml
文件:sudo nano /etc/tomcat9/conf/server.xml
-
找到
< Host>
标签(通常位于< Engine>
内),添加或修改< Valve>
标签:< Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> < !-- 其他配置 --> < Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" resolveHosts="false"/> < /Host>
pattern参数说明(常用字段):
%h
:远程主机IP;%l
:远程逻辑用户名(通常为-
);%u
:远程用户身份验证信息(通常为-
);%t
:请求时间(如[13/Oct/2025:14:30:00 +0800]
);"%r"
:HTTP请求行(如GET /index.html HTTP/1.1
);%s
:HTTP状态码(如200、404);%b
:响应大小(字节,如-
表示无内容)。
示例(包含IP、时间、请求、状态码、响应大小):
pattern="%h %t "%r" %s %b"
-
保存文件并重启Tomcat:
sudo systemctl restart tomcat9
4. 验证配置
- 运行日志:检查Tomcat的
logs/catalina.out
或logs/catalina.YYYY-MM-DD.log
文件,确认日志格式是否符合预期; - 访问日志:检查
logs/localhost_access_log.YYYY-MM-DD.txt
文件,确认访问日志格式是否正确。
通过以上步骤,可灵活自定义Ubuntu Tomcat的运行日志和访问日志格式,满足监控、排查问题的需求。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样自定义Ubuntu Tomcat日志格式
本文地址: https://pptw.com/jishu/725276.html