在 Linux 上轮转(rotate)Tomcat 日志,常见做法有 logrotate 和 Tomcat 自带日志轮转 两种,下面按“最推荐 → 可选”的方式说明。
Tomcat 默认日志(catalina.out、localhost.log 等)不会自动切割,用 logrotate 是最标准的方式。
sudo vi /etc/logrotate.d/tomcat
示例配置(假设 Tomcat 安装在 /opt/tomcat,日志在 /opt/tomcat/logs):
/opt/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
copytruncate
}
/opt/tomcat/logs/*.log {
daily
rotate 7
missingok
notifempty
compress
copytruncate
}
daily:每天轮转rotate 7:保留 7 份compress:压缩旧日志copytruncate:复制后清空原文件(Tomcat 不重启也能用)notifempty:空文件不轮转sudo logrotate -d /etc/logrotate.d/tomcat # 模拟
sudo logrotate -f /etc/logrotate.d/tomcat # 强制执行
Tomcat 使用 java.util.logging,可通过配置实现按天轮转。
$TOMCAT_HOME/conf/logging.properties
示例:
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
⚠️ 默认 不会自动切割 catalina.out,只影响 catalina.YYYY-MM-DD.log
CATALINA_OUT="$CATALINA_BASE/logs/catalina.%Y-%m-%d.out"
配合:
catalina.sh | cronolog ...
❌ 已逐渐被 logrotate 取代
copytruncate 避免 Tomcat 写文件失败journalctl| 方案 | 是否推荐 | 说明 |
|---|---|---|
| logrotate + copytruncate | ✅✅✅ | 最稳定 |
| Tomcat logging.properties | ✅ | 仅限 .log |
| cronolog | ❌ | 老旧 |
如果你愿意,可以告诉我:
我可以帮你写一份可直接用的配置。