在 Debian 上 Tomcat 日志太大,通常有以下几种常见原因和解决办法,你可以按实际情况选:
Tomcat 常见日志有:
catalina.out(最最容易暴涨)catalina.loglocalhost.loghost-manager.logmanager.logaccess_log(访问日志)先看看:
du -sh /var/log/tomcat*/ 2>/dev/null
ls -lh /var/log/tomcat*/
不要自己写脚本删,用 logrotate 最稳
sudo vim /etc/logrotate.d/tomcat
示例(适用于 Tomcat 9 / 10):
/var/log/tomcat*/catalina.out {
daily
missingok
rotate 7
compress
delaycompress
copytruncate
notifempty
}
/var/log/tomcat*/*.log {
daily
missingok
rotate 7
compress
delaycompress
copytruncate
notifempty
}
copytruncate很关键:不重启 Tomcat 也能切日志
sudo logrotate -d /etc/logrotate.d/tomcat
sudo logrotate -f /etc/logrotate.d/tomcat
编辑:
sudo vim /etc/tomcat9/tomcat9.conf
# 或
sudo vim /opt/tomcat/bin/catalina.sh
找到:
CATALINA_OUT="$CATALINA_BASE/logs/catalina.out"
可改为:
CATALINA_OUT=/dev/null
⚠️ 注意:这样会丢失启动日志,不建议生产直接使用
如果你是用 systemctl start tomcat:
sudo systemctl edit tomcat9
加入:
[Service]
StandardOutput=journal
StandardError=journal
然后:
sudo systemctl daemon-reload
sudo systemctl restart tomcat9
日志转由 journalctl 管理:
journalctl -u tomcat9
如果是 你的 Java 项目 打的日志:
log4j.properties / logback.xmlmaxHistoryINFO 而不是 DEBUG编辑:
sudo vim /etc/tomcat9/server.xml
注释或限制:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
maxDays="7" />
sudo truncate -s 0 /var/log/tomcat*/catalina.out
✅ Debian + Tomcat 标准做法
logrotate + copytruncatecatalina.out如果你愿意,可以告诉我:
catalina.out 还是 access log我可以给你精确配置。