tomcat日志配置centos指南
Tomcat日志配置CentOS指南
一、Tomcat日志基础认知
Tomcat的日志主要分为运行日志(记录应用运行状态、错误信息)和访问日志(记录HTTP请求详情)。默认情况下,运行日志由logging.properties
配置,访问日志由server.xml
配置,均存储在${
CATALINA_HOME}
/logs
目录下(CATALINA_HOME
为Tomcat安装目录)。
二、定位Tomcat日志文件
进入Tomcat的logs
目录,常见日志文件说明:
- catalina.out:主运行日志,包含Tomcat启动/停止信息、未捕获的异常及运行时消息;
- localhost.date.log:Tomcat内部组件(如JSP编译、Servlet初始化)的日志;
- manager/date.log:Tomcat Manager应用的访问及操作日志;
- host-manager/date.log:Tomcat Host Manager应用的日志;
- localhost_access_log.date.txt:HTTP访问日志(需通过
server.xml
开启)。
三、实时查看与搜索日志
1. 实时查看运行日志
使用tail -f
命令跟踪catalina.out
的最新内容:
cd $CATALINA_HOME/logs
tail -f catalina.out
按Ctrl+C
停止跟踪。
2. 搜索特定时间段日志
使用sed
命令截取指定时间范围的日志(例如2025-09-01至2025-09-02):
sed -n "/2025-09-01/,/2025-09-02/p" catalina.out >
/tmp/tomcat_specific_logs.txt
将结果保存到/tmp/tomcat_specific_logs.txt
中。
3. 使用journalctl查看Systemd日志
若Tomcat以Systemd服务运行(默认方式),可通过以下命令查看服务日志:
journalctl -u tomcat -f
-f
参数表示实时跟踪,-u tomcat
指定服务名称(需与systemctl start tomcat
中的服务名一致)。
四、日志轮转配置(防止日志过大)
1. 使用logrotate工具
Tomcat默认的日志轮转配置文件位于/etc/logrotate.d/tomcat
,编辑该文件调整规则(示例):
/var/log/tomcat/catalina.out {
daily 每天轮转
rotate 7 保留最近7天的日志
compress 压缩旧日志(生成.gz文件)
missingok 若日志文件不存在也不报错
notifempty 若日志为空则不轮转
create 0640 tomcat tomcat 创建新日志文件,权限0640,属主属组为tomcat
postrotate
/bin/kill -HUP `cat /var/run/tomcat.pid` 2>
/dev/null || true 通知Tomcat重新打开日志文件
endscript
}
2. 手动触发轮转
修改配置后,可通过以下命令立即执行轮转:
logrotate -f /etc/logrotate.d/tomcat
3. 自定义脚本轮转(可选)
若需更灵活的控制(如按大小轮转),可编写脚本tomcatLog.sh
:
!/bin/bash
DIR="/opt/tomcat/logs"
LOGS="$DIR/catalina.out"
DATE=$(date +%Y-%m-%d)
BACKUP_FILE="$DIR/catalina.$DATE.bak"
ARCHIVE_FILE="$DIR/catalina.$DATE.tar.gz"
if [ -d "$DIR" ];
then
cd "$DIR"
cp "$LOGS" "$BACKUP_FILE" 备份原日志
tar -czf "$ARCHIVE_FILE" "$BACKUP_FILE" 压缩备份
rm -f "$BACKUP_FILE" 删除备份文件
>
"$LOGS" 清空原日志
else
echo "Directory does not exist: $DIR"
fi
赋予执行权限并添加定时任务(每天凌晨2点执行):
chmod +x $DIR/tomcatLog.sh
crontab -e
添加以下行
0 2 * * * $DIR/tomcatLog.sh
五、日志级别设置(控制日志详细程度)
Tomcat使用java.util.logging
框架,日志级别从低到高为:SEVERE
>
WARNING
>
INFO
>
CONFIG
>
FINE
>
FINER
>
FINEST
。级别越高,日志越详细。
1. 修改logging.properties文件
编辑${
CATALINA_HOME}
/conf/logging.properties
,调整以下配置:
全局日志级别(默认INFO)
.level=INFO
控制台日志级别(默认INFO)
java.util.logging.ConsoleHandler.level=INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
文件日志级别(默认INFO)
java.util.logging.FileHandler.level=INFO
java.util.logging.FileHandler.pattern=%h/tomcat/logs/app.%u.%g.log
java.util.logging.FileHandler.limit=50000 单个日志文件最大50MB
java.util.logging.FileHandler.count=10 保留10个备份文件
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
特定组件的日志级别(如localhost)
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level=INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers=2localhost.org.apache.juli.AsyncFileHandler
2. 重启Tomcat生效
修改完成后,重启Tomcat使配置生效:
systemctl restart tomcat
六、访问日志配置(记录HTTP请求)
访问日志默认未开启,需通过server.xml
配置。编辑${
CATALINA_HOME}
/conf/server.xml
,找到<
Host>
标签,添加或修改AccessLogValve
配置:
<
Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b %D"
resolveHosts="false"/>
- directory:访问日志存储目录(相对于
CATALINA_HOME
); - prefix:日志文件前缀(如
localhost_access_log
); - suffix:日志文件后缀(如
.txt
); - pattern:日志格式,常用占位符:
%h
:客户端IP地址;%t
:请求时间;%r
:请求行(如GET /index.html HTTP/1.1
);%s
:响应状态码(如200、404);%b
:响应大小(字节);%D
:请求处理时间(毫秒);
- resolveHosts:是否解析客户端主机名(
false
表示不解析,提升性能)。
七、集成第三方日志框架(可选)
若需要更强大的日志功能(如异步日志、日志分级存储),可集成Log4j或Logback。
1. 集成Log4j2步骤
(1)添加依赖
下载Log4j2 JAR包(log4j-api-2.x.x.jar
、log4j-core-2.x.x.jar
、log4j-jul-2.x.x.jar
),放入${
CATALINA_HOME}
/lib
目录。
(2)移除冲突JAR包
删除${
CATALINA_HOME}
/bin/tomcat-juli.jar
和${
CATALINA_HOME}
/lib/tomcat-juli-adapters.jar
(避免与Log4j冲突)。
(3)创建Log4j配置文件
在${
CATALINA_HOME}
/lib
目录下创建log4j2.xml
,示例配置:
<
?xml version="1.0" encoding="UTF-8"?>
<
Configuration status="WARN">
<
Appenders>
<
Console name="Console" target="SYSTEM_OUT">
<
PatternLayout pattern="%d{
yyyy-MM-dd HH:mm:ss}
%-5p %c{
1}
:%L - %m%n"/>
<
/Console>
<
RollingFile name="File" fileName="${
catalina.base}
/logs/app.log"
filePattern="${
catalina.base}
/logs/app-%d{
yyyy-MM-dd}
.log.gz">
<
PatternLayout pattern="%d{
yyyy-MM-dd HH:mm:ss}
%-5p %c{
1}
:%L - %m%n"/>
<
Policies>
<
TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<
/Policies>
<
DefaultRolloverStrategy max="7"/>
<
/RollingFile>
<
/Appenders>
<
Loggers>
<
Root level="INFO">
<
AppenderRef ref="Console"/>
<
AppenderRef ref="File"/>
<
/Root>
<
/Loggers>
<
/Configuration>
(4)重启Tomcat
systemctl restart tomcat
八、注意事项
- 权限问题:确保Tomcat用户(通常为
tomcat
)对日志目录有读写权限; - 磁盘空间:定期清理旧日志,避免占用过多磁盘空间;
- 备份策略:重要日志需定期备份到远程存储(如NFS、S3);
- 性能影响:高频日志(如
FINEST
级别)可能影响Tomcat性能,生产环境建议使用INFO
或WARNING
级别。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: tomcat日志配置centos指南
本文地址: https://pptw.com/jishu/715266.html