温馨提示×

为何Tomcat日志不停增长

小樊
52
2026-10-03 14:52:50
栏目: 智能运维

Tomcat 日志不停增长,通常不是“异常 bug”,而是日志配置或使用方式导致日志持续写入。下面按常见原因逐一说明,并给出对应解决办法。


一、最常见原因

1. 应用不断打印日志(INFO / DEBUG)

很多系统在:

  • 请求量大
  • 定时任务
  • 异常被 catch 后仍然 log.error
  • 开启了 DEBUG/TRACE 级别

会导致:

catalina.out
localhost_access_log
应用自己的 log 文件

持续变大。

✅ 解决:

  • 修改日志级别(logback.xml / log4j2.xml / logging.properties)
  • 避免循环打印异常

2. catalina.out 不会自动切割(非常常见)

Tomcat 默认不会轮转 catalina.out
只要应用往 stdout / stderr 写内容,就会一直追加。

✅ 解决方式:

  • Linux 用 logrotate
  • 或改为使用 logging.properties 控制输出
  • 或把 stdout 重定向到带切割的日志系统

3. Access Log(访问日志)一直写

默认:

logs/localhost_access_log.*.txt

只要有人访问 Tomcat,就会写。

✅ 是否异常?

  • 正常增长 ✅
  • 突然暴涨 ❌(可能是爬虫 / 攻击)

可限制:

<Valve className="org.apache.catalina.valves.AccessLogValve"
       rotatable="true"
       maxDays="30" />

4. 日志没有轮转(Log Rotation 没配置)

如果你用:

  • Log4j / Logback
  • 但没配 RollingFileAppender

结果就是:

一个文件无限增长

✅ 解决:

  • 配置按大小 / 日期切割
  • 设置保留天数

5. 异常或死循环导致疯狂写日志

例如:

  • 定时任务异常重试
  • WebSocket 不断重连
  • 线程池异常打印堆栈

✅ 表现:

  • 几秒钟几 MB
  • CPU 也高

✅ 排查:

tail -f catalina.out

看日志内容是否重复。


6. 被扫描 / 攻击

常见现象:

  • 大量 404
  • 访问 /admin, /wp-admin
  • 同一 IP 高频请求

✅ 解决:

  • 防火墙
  • Nginx 限流
  • 关闭不必要的端口

二、快速自查清单

# 看哪个日志最大
du -sh logs/*

# 实时看日志内容
tail -f logs/catalina.out

# 看访问频率
cat logs/localhost_access_log.* | wc -l

三、总结一句话

Tomcat 日志不停增长,99% 是因为“日志在持续产生 + 没有切割”,不一定是故障,但必须配置日志轮转和级别控制。

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

  • Tomcat 版本
  • 用的日志框架(log4j / logback / jul)
  • 哪个日志文件增长最快

我可以帮你精确定位并给出配置示例。

0 踩