在 Debian 上,Tomcat 日志轮转(log rotation)常见有 三种方式,你可以按实际环境选一种或组合使用。
logrotate(最推荐)Debian 默认带 logrotate,Tomcat 日志一般放在:
/var/log/tomcat9/
/var/log/tomcat10/
以 Tomcat 9 为例:
sudo vim /etc/logrotate.d/tomcat
内容示例:
/var/log/tomcat9/*.log
/var/log/tomcat9/catalina.out {
daily
missingok
rotate 14
compress
delaycompress
notifempty
copytruncate
}
daily:每天轮转rotate 14:保留 14 份compress:压缩旧日志copytruncate:不重启 Tomcat 直接截断日志(常用)notifempty:空文件不轮转sudo logrotate -d /etc/logrotate.d/tomcat
sudo logrotate -f /etc/logrotate.d/tomcat
logging.properties(JULI)Tomcat 使用 java.util.logging:
/etc/tomcat9/logging.properties
示例(按大小轮转):
1catalina.org.apache.juli.FileHandler.level = INFO
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
# 轮转配置
1catalina.org.apache.juli.FileHandler.limit = 10485760
1catalina.org.apache.juli.FileHandler.count = 10
⚠ 注意:
catalina.out 不会被这个机制轮转cronolog(老方案,不推荐新项目)sudo apt install cronolog
修改 bin/catalina.sh:
org.apache.catalina.startup.Bootstrap "$@" start \
| cronolog /var/log/tomcat9/catalina.%Y-%m-%d.out &
缺点:
catalina.out 越来越大?✅ 用 logrotate + copytruncate
检查:
ls -l /etc/logrotate.d/
sudo systemctl status logrotate
仍可用 logrotate,不影响
✅ 最佳实践
logrotate + copytruncate
如果你告诉我:
我可以给你一份精确可直接用的配置。