温馨提示×

为何debian tomcat日志过大

小樊
41
2026-10-10 04:54:00
栏目: 智能运维

Debian 上 Tomcat 日志过大通常不是 Tomcat 本身的 bug,而是日志配置、运行环境或应用行为导致的。下面按常见原因 → 对应说明 → 解决办法来讲。


一、最常见原因汇总

1️⃣ 没有做日志轮转(Log Rotation 缺失)

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

2️⃣ 应用疯狂打日志(INFO / DEBUG)

很多 Java 项目默认:

<Logger level="DEBUG"/>

在高并发下,日志量会爆炸。

✅ 检查:

grep -R "DEBUG" /etc/tomcat9/
grep -R "level" /var/lib/tomcat9/webapps/*/WEB-INF/

✅ 建议:

  • 生产环境使用 INFO 或 WARN
  • 关闭 SQL 日志(MyBatis / Hibernate)

3️⃣ 使用了 System.out.println()

System.out.println() 会写入:

catalina.out

这个文件 Tomcat 默认不会轮转。

✅ 解决:

  • 禁止 System.out
  • 或配置 catalina.out 轮转

示例(logrotate):

/var/log/tomcat9/catalina.out {
    daily
    rotate 7
    compress
    copytruncate
}

4️⃣ Access Log(访问日志)过大

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 -->

5️⃣ 异常 / 堆栈无限打印

比如:

  • 定时任务异常
  • 连接池耗尽
  • 死循环 catch 打印

✅ 表现:

java.lang.Exception
   at ...
   at ...
(几万行)

✅ 解决:

  • 修复代码逻辑
  • 限制异常日志频率

6️⃣ Debian + systemd 重复日志

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

三、标准生产建议

✅ 必须做:

  • 启用 logrotate
  • 关闭 DEBUG
  • 限制 access log 天数
  • 不写 catalina.out

✅ 推荐:

  • 使用 logback / log4j2
  • 日志按天分割
  • 日志集中到 ELK / Loki

如果你愿意,可以告诉我:

  • Debian 版本
  • Tomcat 版本
  • 哪个日志文件最大(catalina.out / access_log / 应用 log)

我可以直接帮你给出精准配置。

0 踩