在 Linux 下,Tomcat 日志分割常见有 三种主流方案,从简单到专业依次是:
# CentOS
yum install cronolog -y
# Ubuntu / Debian
apt-get install cronolog -y
找到 CATALINA_OUT 相关输出位置,一般是:
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
将其改为:
CATALINA_OUT="/usr/sbin/cronolog $CATALINA_BASE/logs/catalina.%Y-%m-%d.out"
在 catalina.sh 中,将:
>> "$CATALINA_OUT" 2>&1 &
改为:
2>&1 | /usr/sbin/cronolog $CATALINA_BASE/logs/catalina.%Y-%m-%d.out &
✅ 效果:
catalina.2026-01-21.out
catalina.2026-01-22.out
vi /etc/logrotate.d/tomcat
示例:
/opt/tomcat/logs/catalina.out {
daily
rotate 30
missingok
notifempty
compress
copytruncate
}
daily:每天分割rotate 30:保留 30 天compress:压缩旧日志copytruncate:不重启 Tomcat 截断日志(关键)logrotate -f /etc/logrotate.d/tomcat
✅ 优点:
Tomcat 自带 java.util.logging
修改:
vi $TOMCAT_HOME/conf/logging.properties
示例:
handlers = 1catalina.org.apache.juli.FileHandler
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
⚠️ 默认不支持自动按天分割,一般配合 logrotate 使用。
| 场景 | 推荐方式 |
|---|---|
| 简单快速 | cronolog |
| 生产环境 | logrotate |
| 不修改 Tomcat | logrotate |
如果你告诉我:
我可以给你一份可直接用的配置。