一、定位Tomcat日志文件
Tomcat的日志文件默认存储在$CATALINA_HOME/logs目录下($CATALINA_HOME为Tomcat安装目录环境变量),主要包含以下类型:
cd $CATALINA_HOME/logs进入目录,可使用ls命令查看具体文件。二、实时查看与筛选日志
tail -f命令实时查看catalina.out的最新内容(如tail -f $CATALINA_HOME/logs/catalina.out),按Ctrl+C停止;sed命令截取指定时间范围的日志(如sed -n "/2025-10-01/,/2025-10-02/p" catalina.out > /tmp/oct1_logs.txt),将结果保存到临时文件便于分析;journalctl -u tomcat查看所有服务日志,支持按时间过滤(如journalctl -u tomcat --since "2025-10-01" --until "2025-10-02")。三、配置日志轮转(核心高效管理手段)
日志轮转可防止catalina.out等文件无限增长,避免磁盘空间耗尽。推荐使用系统自带的logrotate工具,步骤如下:
sudo yum install logrotate命令安装(CentOS默认已预装);/etc/logrotate.d/目录下新建tomcat文件(如sudo vi /etc/logrotate.d/tomcat);/usr/local/tomcat/logs/catalina.out {
daily # 每天轮转一次(可根据需求改为weekly/monthly)
rotate 7 # 保留最近7个轮转文件(避免过多占用空间)
compress # 使用gzip压缩轮转后的文件(如catalina.out.1.gz)
missingok # 若日志文件不存在,不报错继续执行
notifempty # 若日志文件为空,不进行轮转
copytruncate # 复制原日志文件后清空内容(避免Tomcat写入锁定的问题)
}
sudo logrotate -d /etc/logrotate.d/tomcat命令模拟执行,无错误提示则表示配置正确;sudo logrotate -f /etc/logrotate.d/tomcat(-f表示强制);/etc/cron.daily/logrotate),无需额外配置,每日自动运行。四、调整日志输出级别(减少无效日志)
通过修改Tomcat的日志配置文件,可降低不必要的日志输出,提升日志可读性:
$CATALINA_HOME/conf目录,编辑logging.properties文件,调整handlers的日志级别(如将FINE改为WARNING或OFF):handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.level = WARNING # 全局日志级别(控制所有handler的输出阈值)
1catalina.org.apache.juli.AsyncFileHandler.level = WARNING # catalina日志级别
java.util.logging.ConsoleHandler.level = WARNING # 控制台输出级别
$CATALINA_HOME/bin/catalina.sh中,添加JAVA_OPTS参数限制日志输出(如export JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties -Dorg.apache.catalina.level=WARNING")。五、自动化清理旧日志(补充方案)
若不想依赖logrotate的rotate参数,可通过shell脚本定期清理旧日志,步骤如下:
auto-del-old-tomcat-logs.sh文件(如/usr/local/tomcat/scripts/auto-del-old-tomcat-logs.sh),内容如下:#!/bin/bash
LOG_DIR="/usr/local/tomcat/logs" # 日志目录
DAYS_TO_KEEP=30 # 保留最近30天的日志
find "$LOG_DIR" -name "*.log*" -type f -mtime +$DAYS_TO_KEEP -exec rm -f {} \; # 删除超过30天的.log文件
find "$LOG_DIR" -name "catalina.out.*" -type f -mtime +$DAYS_TO_KEEP -exec rm -f {} \; # 删除catalina.out的旧备份
chmod +x /usr/local/tomcat/scripts/auto-del-old-tomcat-logs.sh;crontab -e命令添加每日凌晨2点执行的定时任务(如0 2 * * * /usr/local/tomcat/scripts/auto-del-old-tomcat-logs.sh)。六、可选:使用Log4j替代默认日志框架(高级方案)
若默认的java.util.logging无法满足需求(如需要更灵活的日志格式、远程日志传输),可切换至Log4j:
log4j-1.2.17.jar、tomcat-juli.jar、tomcat-juli-adapters.jar(从Tomcat官网或Maven仓库获取);log4j-1.2.17.jar放入$CATALINA_HOME/lib目录,将tomcat-juli.jar复制到$CATALINA_HOME/bin目录并替换原文件;$CATALINA_HOME/conf/logging.properties,在lib目录下创建log4j.properties,配置日志输出(如滚动文件、控制台输出):log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/usr/local/tomcat/logs/tomcat.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
$CATALINA_HOME/conf/context.xml中添加swallowOutput="true",确保Tomcat的stdout/stderr被Log4j接管。