Debian 上 Tomcat 日志过大通常不是 Tomcat 本身的 bug,而是日志配置、运行环境或应用行为导致的。下面按常见原因 → 对应说明 → 解决办法来讲。
Debian 下 Tomcat 日志一般位于:
/var/log/tomcat9/
/var/log/tomcat10/
如果 logrotate 没生效,文件会一直增长。
✅ 检查:
ls -lh /var/log/tomcat9
cat /etc/logrotate.d/tomcat9
✅ 正常应包含:
/var/log/tomcat9/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
✅ 手动测试:
logrotate -d /etc/logrotate.d/tomcat9
logrotate -f /etc/logrotate.d/tomcat9
很多 Java 项目默认:
<Logger level="DEBUG"/>
在高并发下,日志量会爆炸。
✅ 检查:
grep -R "DEBUG" /etc/tomcat9/
grep -R "level" /var/lib/tomcat9/webapps/*/WEB-INF/
✅ 建议:
INFO 或 WARNSystem.out.println() 会写入:
catalina.out
这个文件 Tomcat 默认不会轮转。
✅ 解决:
System.outcatalina.out 轮转示例(logrotate):
/var/log/tomcat9/catalina.out {
daily
rotate 7
compress
copytruncate
}
Tomcat 默认开启:
localhost_access_log.*.txt
高流量网站一天几个 G 很常见。
✅ 控制方式(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" />
或关闭:
<!-- 注释掉 AccessLogValve -->
比如:
✅ 表现:
java.lang.Exception
at ...
at ...
(几万行)
✅ 解决:
Debian 10+ 使用 systemd:
journalctl -u tomcat9
Tomcat 日志 + journald 双重存储。
✅ 查看:
journalctl --disk-usage
✅ 限制:
/etc/systemd/journald.conf
SystemMaxUse=500M
# 找出最大日志
du -sh /var/log/tomcat9/* | sort -h
# 实时查看增长
watch -n 1 ls -lh /var/log/tomcat9
# 看哪类日志在涨
tail -f /var/log/tomcat9/catalina.out
✅ 必须做:
✅ 推荐:
如果你愿意,可以告诉我:
我可以直接帮你给出精准配置。