温馨提示×

ubuntu tomcat日志为何变大

小樊
45
2026-09-24 21:29:35
栏目: 智能运维

在 Ubuntu 上,Tomcat 日志突然或持续变大是比较常见的问题,通常不是系统本身的问题,而是日志配置或应用行为导致的。下面按常见原因 → 表现 → 解决办法给你系统梳理一下。


一、最常见原因

1️⃣ catalina.out 无限增长(最常见)

Tomcat 默认会把 标准输出(stdout) + 标准错误(stderr) 写入:

/var/log/tomcat9/catalina.out

只要应用里有:

  • System.out.println(...)
  • e.printStackTrace()
  • 框架异常没捕获

日志就会只增不减,不会自动切割。

✅ 表现

  • catalina.out 几个 G 甚至几十 G
  • 磁盘空间被吃光

✅ 解决

  • 使用 logrotate(推荐)
  • 或改用 log4j / logback,不输出到 stdout

2️⃣ 没有配置日志轮转(logrotate)

Ubuntu 虽然自带 logrotate,但:

  • 某些手动安装的 Tomcat
  • 或使用非默认目录

可能 没有 logrotate 配置

✅ 检查:

cat /etc/logrotate.d/tomcat9

✅ 示例(简化):

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

⚠️ Tomcat 运行时不能随便 mv,必须用 copytruncate


3️⃣ 应用日志级别太低(DEBUG / TRACE)

很多项目在:

  • 测试环境
  • 或误打包生产

使用了:

<level value="DEBUG"/>

✅ 表现

  • localhost_access_log 不大
  • 但 app.log / catalina.out 巨大

✅ 解决

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

4️⃣ 访问日志(access log)没限制

Tomcat 的:

localhost_access_log.*.txt

在高并发下也会快速增长。

✅ 解决:

  • 控制保留天数
  • 或关闭不需要的访问日志

5️⃣ 异常被反复抛出(死循环 / 重试)

比如:

  • 定时任务异常
  • MQ 消费失败重试
  • 接口 500 被监控频繁调用

✅ 表现

  • 短时间日志暴涨
  • 出现大量相同异常堆栈

✅ 解决

  • 加熔断 / 限流
  • 异常只记一次

6️⃣ Tomcat 版本或安装方式问题

  • 手动解压的 Tomcat
  • 不使用 Ubuntu 官方包

➡️ 默认不会接 Ubuntu 的 logrotate


二、快速排查清单(建议你照做)

# 1. 看哪个日志大
du -sh /var/log/tomcat9/*

# 2. 看磁盘
df -h

# 3. 看是否有 catalina.out
ls -lh /var/log/tomcat9/catalina.out

# 4. 看 logrotate 是否生效
logrotate -d /etc/logrotate.d/tomcat9

三、生产环境推荐做法 ✅

✅ 使用:

  • logrotate
  • log4j2 / logback
  • 不写 catalina.out
  • 日志级别控制
  • 定期清理策略

四、如果你愿意

你可以直接贴:

  • Tomcat 版本
  • 日志目录 ls -lh
  • 是否用 Spring Boot
  • 是否有 catalina.out

我可以针对你这台服务器直接给配置方案。

0 踩