在 Ubuntu 上轮转(rotate)Tomcat 日志,常见有 两种思路:
下面分别说明。
Ubuntu 默认带 logrotate,Tomcat 日志一般在:
/var/log/tomcat9/ # Tomcat 9 示例
/opt/tomcat/logs/ # 自定义安装
新建配置文件:
sudo vim /etc/logrotate.d/tomcat
示例(Tomcat 9,Ubuntu 官方包):
/var/log/tomcat9/*.log
/var/log/tomcat9/*.txt {
daily
missingok
rotate 14
compress
delaycompress
notifempty
copytruncate
}
daily:每天轮转rotate 14:保留 14 份compress:压缩旧日志copytruncate:复制后清空原文件(Tomcat 不重启也能用)notifempty:空文件不轮转⚠️ 如果你用
tomcat用户运行,确保日志目录有写权限
sudo logrotate -d /etc/logrotate.d/tomcat
强制立即执行:
sudo logrotate -f /etc/logrotate.d/tomcat
catalina.out 不会自动切割,最容易爆盘。
/var/log/tomcat9/catalina.out {
daily
rotate 14
compress
copytruncate
missingok
}
修改 bin/catalina.sh:
CATALINA_OUT="$CATALINA_BASE/logs/catalina.%Y-%m-%d.out"
并用 cronolog 启动(不推荐新项目)。
如果你用的是 java.util.logging:
编辑:
/etc/tomcat9/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 即可。
❌ 不要直接 mv catalina.out
→ Tomcat 仍持有文件句柄,磁盘不会释放
✅ 用 copytruncate 或重启 Tomcat
| 场景 | 推荐 |
|---|---|
| Ubuntu 官方 Tomcat | logrotate |
| 自定义安装 Tomcat | logrotate + copytruncate |
| 容器环境 | 日志重定向到 stdout |
如果你愿意,可以告诉我:
我可以给你精准配置。