优化目标与总体思路
方案一 Logrotate管理catalina.out
sudo yum install -y logrotate。sudo vi /etc/logrotate.d/tomcat,写入以下内容(按需调整路径与保留策略):/opt/tomcat/logs/catalina.out {
copytruncate
daily
rotate 30
size 100M
compress
delaycompress
missingok
notifempty
create 640 tomcat adm
dateext
dateformat -%Y-%m-%d
}
/etc/cron.daily/logrotate,读取 /etc/logrotate.conf 并包含 /etc/logrotate.d/*。sudo logrotate -d /etc/logrotate.d/tomcat(dry-run)sudo logrotate -f /etc/logrotate.d/tomcatfind 删除超过 N 天的 .gz 文件,例如保留 90 天:find /opt/tomcat/logs -name "catalina.out-*.gz" -mtime +90 -delete
以上做法为 CentOS 上通用、低侵入的日志存储优化方案,参数可按业务写入量灵活调整。
方案二 使用cronolog按日期自动切割stdout
sudo yum install -y cronologbin/catalina.sh,找到类似:org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /usr/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out-%Y-%m-%d.log >> /dev/null &
logs/ 下生成按日期命名的文件(如:catalina.out-2025-12-11.log),天然避免单文件过大。find 定期删除 N 天前文件,例如保留 30 天:find /opt/tomcat/logs -name "catalina.out-*.log" -mtime +30 -delete
该方案通过管道将标准输出交给 cronolog 按日期创建新文件,省去后续对 catalina.out 的轮转配置。
进阶与配套优化
conf/logging.properties 中将不必要的日志级别调高(如 WARNING/ERROR),或关闭控制台输出,降低磁盘写入速率。copytruncate 的潜在截断风险,可改用“rename + 信号”方式:
rename() 将 catalina.out 改为带日期的新名;