温馨提示×

debian tomcat日志为何变大

小樊
45
2026-09-01 08:59:21
栏目: 智能运维

在 Debian 上运行 Tomcat 时,日志文件突然或持续变大是比较常见的问题,通常和日志配置、应用行为或系统环境有关。下面按常见原因 → 说明 → 解决建议来说明。


一、Tomcat 自身日志机制导致

1. 使用的是 catalina.out

  • 原因
    • catalina.out 不会自动切割
    • System.out / System.err、未捕获异常都会写入
  • 表现
    • 单文件越来越大(几 GB 很常见)
  • 解决
    • 使用 logrotate
    • 或改用 logging 框架(log4j2 / logback)

示例 logrotate:

/opt/tomcat/logs/catalina.out {
    copytruncate
    daily
    rotate 7
    compress
    missingok
}

2. 日志级别过低(DEBUG / INFO)

  • 原因
    • logging.properties 中级别设置过低
  • 解决
    .level = INFO
    org.apache.catalina.level = WARNING
    

二、Web 应用日志问题(最常见)

3. 应用疯狂打日志

  • 原因
    • 异常被 catch 后仍然 e.printStackTrace()
    • 循环 / 定时任务日志过多
  • 解决
    • 检查应用日志框架配置
    • 避免 System.out.println

4. 日志未轮转(log4j / logback)

  • 原因
    • 没有配置 RollingFileAppender
  • 解决示例(logback)
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>app-%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>7</maxHistory>
      </rollingPolicy>
    </appender>
    

三、访问日志(access log)过大

5. Access Log 未限制

  • 路径:logs/localhost_access_log.*
  • 解决
    • 减少字段
    • 开启轮转
<Valve className="org.apache.catalina.valves.AccessLogValve"
       rotatable="true"
       pattern="%h %l %u %t "%r" %s %b" />

四、系统或运行环境问题

6. Tomcat 频繁重启

  • 每次启动都产生新日志
  • 旧日志未清理

✅ 检查:

systemctl status tomcat
journalctl -u tomcat

7. 磁盘被日志占满

  • Debian 默认不自动清理 /var/log
  • Tomcat 在 /opt/tomcat/logs/var/lib/tomcat9/logs

✅ 查看:

du -sh /opt/tomcat/logs/*

五、快速排查步骤(推荐)

# 查看哪个日志最大
du -h /opt/tomcat/logs/* | sort -h

# 查看正在写入的日志
lsof | grep tomcat | grep log

# 查看日志内容
tail -f catalina.out

六、一句话总结

Debian 上 Tomcat 日志变大,90% 是因为 catalina.out 没轮转 + 应用日志级别过高或异常狂打。

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

  • Tomcat 版本
  • 日志路径
  • 用的是 log4j / logback / 原生 logging

我可以帮你直接给一份可落地的配置方案

0