在 Ubuntu 上,Tomcat 日志分割通常有两种主流做法:
下面分别说明,并给出可直接使用的配置示例。
sudo apt update
sudo apt install cronolog
编辑 bin/catalina.sh(或 systemd 启动方式见后文):
找到类似下面这一行:
>> "$CATALINA_OUT" 2>&1 &
修改为:
| /usr/bin/cronolog "$CATALINA_BASE/logs/catalina.%Y-%m-%d.out" >> /dev/null 2>&1 &
并确保 CATALINA_OUT 类似:
CATALINA_OUT="$CATALINA_BASE/logs/catalina.out"
✅ 重启 Tomcat 后,日志会变成:
catalina.2026-01-21.out
catalina.2026-01-22.out
这是 Ubuntu 官方推荐方式,不修改 Tomcat 本身。
sudo vim /etc/logrotate.d/tomcat
内容示例:
/var/log/tomcat*/catalina.out {
daily
rotate 30
compress
delaycompress
missingok
notifempty
copytruncate
}
| 参数 | 说明 |
|---|---|
| daily | 每天切割 |
| rotate 30 | 保留 30 天 |
| compress | 压缩旧日志 |
| copytruncate | 不重启 Tomcat |
| missingok | 日志不存在不报错 |
sudo logrotate -d /etc/logrotate.d/tomcat
✅ 第二天即可看到:
catalina.out
catalina.out.1
catalina.out.2.gz
如果你是用 systemd 启动 Tomcat:
sudo vim /lib/systemd/system/tomcat.service
在 [Service] 中:
StandardOutput=append:/var/log/tomcat/catalina.out
StandardError=append:/var/log/tomcat/catalina.out
然后配合 logrotate 使用即可。
这些日志由 logging.properties 控制,可配置滚动策略:
1catalina.org.apache.juli.AsyncFileHandler.rotatable = true
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
Tomcat 默认会按日期生成:
catalina.2026-01-21.log
| 场景 | 推荐 |
|---|---|
| 只想简单切 catalina.out | cronolog |
| 生产环境、稳定 | logrotate ✅ |
| Ubuntu + systemd | logrotate |
如果你愿意,可以告诉我:
我可以给你一份 完全贴合你环境的配置。