在 Debian 上分割(切割、轮转)Tomcat 日志,常见做法有 logrotate(推荐)、Tomcat 自带 logging 配置、以及 cronolog 等工具。下面按使用频率从高到低说明。
Debian 默认已安装 logrotate,适合管理 catalina.out 等持续增长的日志。
sudo nano /etc/logrotate.d/tomcat
示例(假设 Tomcat 安装在 /opt/tomcat 或 /var/lib/tomcat9):
/opt/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
copytruncate
dateext
}
| 参数 | 作用 |
|---|---|
daily |
每天切割 |
rotate 7 |
保留 7 份 |
compress |
压缩旧日志 |
copytruncate |
不重启 Tomcat 直接切割 |
dateext |
使用日期后缀 |
✅
copytruncate是关键,避免 Tomcat 继续写旧文件句柄
sudo logrotate -d /etc/logrotate.d/tomcat
适用于:
localhost.*.logmanager.*.loghost-manager.*.log编辑:
/opt/tomcat/conf/logging.properties
1catalina.org.apache.juli.AsyncFileHandler.rotatable = true
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 7
Tomcat 自带 JULI 日志系统支持按天轮转,但 不支持 catalina.out。
sudo apt install cronolog
编辑 catalina.sh 或 setenv.sh:
CATALINA_OUT_CMD="|/usr/bin/cronolog /opt/tomcat/logs/catalina.%Y-%m-%d.out"
✅ 优点:按日期自动生成文件
❌ 缺点:维护成本高,已逐渐被 logrotate 取代
如果 Tomcat 是通过 systemd 启动的:
sudo journalctl -u tomcat9 --since today
可配合:
sudo nano /etc/systemd/journald.conf
SystemMaxUse=200M
✅ 生产环境推荐组合
catalina.out → logrotatelocalhost.*.log → logging.properties✅ 清理前确认
ls -lh /opt/tomcat/logs
→ 没用 copytruncate
→ 或 Tomcat 被 systemd 重定向到 journal
du -sh /opt/tomcat/logs/*
如果你愿意,可以告诉我:
我可以给你一份 完全定制化的 logrotate 配置。