在 Debian 上“切割 Tomcat 日志”通常有两种常见场景:
下面按最常用、最稳妥的方式讲。
Debian 自带 logrotate,非常适合切割 catalina.out。
sudo vi /etc/logrotate.d/tomcat
示例(假设 Tomcat 安装在 /opt/tomcat):
/opt/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
delaycompress
copytruncate
}
daily:每天切割rotate 7:保留 7 份compress:压缩旧日志copytruncate:复制后清空原文件(Tomcat 不重启也能用)sudo logrotate -d /etc/logrotate.d/tomcat
没报错后再强制执行一次:
sudo logrotate -f /etc/logrotate.d/tomcat
✅ 这是生产环境最推荐方式
Tomcat 自带的 java.util.logging 不能自动切割 catalina.out
只能控制:
catalina.loglocalhost.log示例(conf/logging.properties):
1catalina.org.apache.juli.FileHandler.rotatable = true
1catalina.org.apache.juli.FileHandler.bufferSize = 1024
⚠️ 对 catalina.out 无效
sudo apt install cronolog
CATALINA_OUT="$CATALINA_BASE/logs/catalina.%Y-%m-%d.out"
并改为:
| /usr/bin/cronolog "$CATALINA_OUT" &
⚠️ 需要改启动脚本,维护成本高
如果你用的是:
log4j2logback直接配置 按大小 / 按天滚动,不需要 logrotate。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
| 场景 | 推荐方案 |
|---|---|
| catalina.out | ✅ logrotate + copytruncate |
| 应用日志 | ✅ log4j / logback |
| 老系统 | cronolog(不推荐) |
如果你愿意,可以告诉我:
我可以给你完全贴合你环境的配置。