在 Debian 系统上,Tomcat 日志清理一般有几种常见做法,下面按“安全 → 自动 → 根本”的顺序说明。
默认位置通常是:
/var/log/tomcat9/ # Debian 包安装(tomcat9/tomcat10)
或者
/opt/tomcat/logs/ # 手动安装
常见日志文件:
catalina.out ← 最容易变大catalina.YYYY-MM-DD.loglocalhost.loghost-manager.logmanager.logaccess_log_*.log# 停止 Tomcat(推荐)
systemctl stop tomcat9
# 清空而不是删除(避免 Tomcat 占用文件)
: > /var/log/tomcat9/catalina.out
# 或删除旧日志
rm -f /var/log/tomcat9/*.log.*
# 启动
systemctl start tomcat9
⚠️ 不要直接 rm catalina.out 而 Tomcat 在运行,可能导致日志写失效。
Debian 自带 logrotate,最规范。
ls /etc/logrotate.d/
cat /etc/logrotate.d/tomcat9
sudo nano /etc/logrotate.d/tomcat
示例(适用于 tomcat9):
/var/log/tomcat9/*.log
/var/log/tomcat9/catalina.out {
daily
missingok
rotate 7
compress
delaycompress
copytruncate
notifempty
}
说明:
copytruncate:不重启 Tomcat 也能截断日志(关键)rotate 7:保留 7 天compress:压缩旧日志logrotate -d /etc/logrotate.d/tomcat
logrotate -f /etc/logrotate.d/tomcat
编辑:
/etc/tomcat9/logging.properties
限制示例(示例性):
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 7
Tomcat server.xml 中:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="access_log"
suffix=".txt"
rotatable="true" />
可加:
maxDays="30"
crontab -e
每天清理 30 天前日志:
0 3 * * * find /var/log/tomcat9 -name "*.log*" -mtime +30 -delete
| 场景 | 建议 |
|---|---|
| Debian 包安装 | 用 logrotate |
| catalina.out 太大 | logrotate + copytruncate |
| 长期运维 | 限制 maxDays |
| 手动安装 | 自己配 logrotate |
如果你愿意,可以告诉我:
catalina.out 还是 access log我可以给你精确配置。