最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux Tomcat日志轮转策略是什么
时间:2026-07-25 17:09:50 编辑:袖梨 来源:一聚教程网
Linux Tomcat日志轮转策略

一 默认行为与局限
- Tomcat 默认把标准输出与错误输出重定向到 $CATALINA_HOME/logs/catalina.out,该文件不会自动切割,长期运行会持续增长。内置的 JULI(java.util.logging) 按文件大小对部分日志(如 catalina、localhost 等)进行轮转,常见配置为 FileHandler.limit + FileHandler.count,但 catalina.out 不在其管理范围内,仍需外部方案处理。若需更灵活的按天/按大小策略,通常采用系统级工具或改造输出方式。
二 推荐策略 logrotate管理catalina.out
- 思路:使用系统自带的 logrotate 对 catalina.out 执行按天或按大小的切割、压缩与保留,适配绝大多数 Linux 发行版与 Tomcat 部署形态。
- 典型配置(/etc/logrotate.d/tomcat):
关键参数说明:/opt/tomcat/logs/catalina.out {dailyrotate 7size 100Mcopytruncatecompressdelaycompressmissingoknotifemptydateextdateformat -%Y%m%dsu tomcat tomcat}- daily / size 100M:按天或当文件达到 100MB 触发轮转(满足任一条件即触发)。
- copytruncate:复制后截断原文件,保证 Tomcat 进程无需重启 且持续写入同一文件句柄。
- compress / delaycompress:归档后压缩,delaycompress 常用于“下次轮转再压缩昨日文件”,便于快速回滚查看。
- missingok / notifempty:文件缺失不报错;空文件不轮转。
- dateext / dateformat -%Y%m%d:归档文件以日期命名,便于检索与清理。
- su tomcat tomcat:以指定系统用户/组执行,避免权限问题。
- 执行与验证:
- 手动测试:
logrotate -d /etc/logrotate.d/tomcat(语法/路径检查),logrotate -f /etc/logrotate.d/tomcat(强制执行一次)。 - 自动执行:系统通常通过 /etc/cron.daily/logrotate 每日运行;部分发行版由 anacron 在 3:22–22:00 区间随机延时执行(如 START_HOURS_RANGE=3-22,RANDOM_DELAY=45),无需额外添加 cron。
- 手动测试:
三 替代与增强方案
- 按日期管道切割 catalina.out(cronolog)
- 安装 cronolog 后,修改 bin/catalina.sh 中标准输出重定向,例如:
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /usr/local/cronolog/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null & - 特点:天然按天生成 catalina.YYYY-MM-DD.out,无需后续压缩与清理脚本,但对运行期日志句柄无侵入式截断需求。
- 安装 cronolog 后,修改 bin/catalina.sh 中标准输出重定向,例如:
- 使用 Log4j 接管并精细控制
- 以 Log4j + Tomcat-Juli 替换默认 JULI,配置 DailyRollingFileAppender / RollingFileAppender 实现按天或按大小滚动,并可配合 maxBackupIndex 控制保留份数;需在 conf/context.xml 设置 swallowOutput=“true” 将 stdout/stderr 纳入日志框架。适合对日志格式、滚动策略、异步输出有更高要求的场景。
四 多实例与历史日志清理
- 多实例统一策略:在 /etc/logrotate.d/ 下为不同实例分别配置,或使用通配路径一次性匹配多个实例日志目录,例如:
/opt/tomcat*/logs/catalina.out {dailyrotate 15copytruncatecompressmissingokdateextsu tomcat tomcat} - 历史文件清理:对按日期命名的归档或访问日志,可用 find … -mtime +N 定期清理,例如保留 7 天:
也可在 logrotate 的 postrotate/endscript 中加入自定义清理命令,实现与轮转动作联动。0 2 * * * find /opt/tomcat*/logs -name 'catalina.out-*-gz' -mtime +7 -delete0 2 * * * find /opt/tomcat*/logs -name 'localhost_access_log.*.txt' -mtime +7 -delete
相关文章
- 屁股已撅好你轻点打表情包 07-28
- 2026年和平精英账号交易指南:五大交易平台安全性与合规性对比分析 07-28
- 华灯初上在哪个app播出 免费影视剧软件下载合集 07-28
- 免费看动漫的app下载大全 免费看动漫的app有哪些 07-28
- 文字编辑软件哪个好 文字编辑软件app推荐 07-28
- 原神那维莱特角色人物背景故事介绍 07-28