在 Debian 上,Tomcat 日志分割常见有几种做法,从“官方推荐”到“实战常用”依次说明。你可以按场景选择。
Tomcat 8+ 默认使用 java.util.logging + systemd,日志由 journald 管理,而不是 catalina.out。
systemctl status tomcat9
如果看到:
Main PID: xxx (java)
说明是 systemd 启动的。
journalctl -u tomcat9
查看实时日志:
journalctl -u tomcat9 -f
✅ 优点
❌ 缺点
catalina.out 的用户如果你仍然生成 catalina.out,这是最经典方案。
apt install logrotate
vim /etc/logrotate.d/tomcat
示例(适合 Tomcat 9):
/var/log/tomcat9/catalina.out {
daily
rotate 7
missingok
notifempty
compress
delaycompress
copytruncate
dateext
dateformat -%Y%m%d
}
| 参数 | 作用 |
|---|---|
| daily | 每天切割 |
| rotate 7 | 保留 7 天 |
| compress | 压缩旧日志 |
| copytruncate | 不重启 Tomcat |
| dateext | 日期后缀 |
logrotate -d /etc/logrotate.d/tomcat
✅ 优点
apt install cronolog
编辑:
vim /usr/share/tomcat9/bin/catalina.sh
找到:
>> "$CATALINA_OUT" 2>&1 &
改为:
2>&1 | /usr/bin/cronolog /var/log/tomcat9/catalina.%Y%m%d.out &
systemctl restart tomcat9
✅ 日志示例:
catalina.20260121.out
⚠ 不推荐新项目使用
适合 应用日志,不是 Tomcat 本身日志。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/tomcat9/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/tomcat9/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
✅ 精细控制
❌ 需要改代码/配置
| 场景 | 推荐方案 |
|---|---|
| Debian + Tomcat 9+ | systemd journal |
| 有 catalina.out | logrotate(最常用) |
| 老系统 | cronolog |
| 应用日志 | log4j / logback |
copytruncate 或 postrotate 必须二选一chown -R tomcat:tomcat /var/log/tomcat9
如果你愿意,可以告诉我:
catalina.out我可以给你完全贴合你系统的配置。