温馨提示×

debian tomcat日志为何满

小樊
48
2026-09-07 08:58:33
栏目: 智能运维

在 Debian 上 Tomcat 日志“满”(磁盘被占满或日志文件异常巨大)是常见问题,通常不是 Tomcat 本身的 bug,而是配置或使用方式导致的。下面按「常见原因 → 排查方法 → 解决建议」说明。


一、Tomcat 日志为什么会“满”

1. 使用了 catalina.out(最常见)

  • catalina.out 不会自动切割
  • 所有 System.out.printlnlog.error 都会写进去
  • 默认在:
    /var/log/tomcat9/catalina.out
    
  • 应用日志量大时,几天就能写满磁盘

这是 Debian + Tomcat 日志满的第一大原因


2. 日志级别设置过低

  • logging.properties 中:
    .level = FINE
    
  • DEBUG / FINE 级别会输出大量信息

3. 应用异常循环打印日志

  • 异常被 catch 后反复打印
  • 定时任务 / 线程池异常
  • 示例:
    while (true) {
        log.error("error", e);
    }
    

4. 未配置日志轮转(logrotate)

  • Debian 默认有 logrotate
  • 但:
    • 自定义目录的日志
    • Docker / 手动安装 Tomcat
    • 可能没生效

5. 使用了 log4j / logback 但未限制大小

  • 没有 maxFileSize
  • 没有 maxHistory

6. Tomcat 版本差异

版本 说明
Tomcat 8/9 默认 catalina.out
Tomcat 10 同上

二、如何快速排查

1️⃣ 查看磁盘占用

df -h
du -sh /var/log/tomcat9/*

2️⃣ 找出大文件

ls -lh /var/log/tomcat9/

3️⃣ 查看是否 catalina.out 暴涨

tail -n 100 /var/log/tomcat9/catalina.out

三、标准解决方案(推荐)

✅ 方案一:用 logrotate 切割 catalina.out(Debian 推荐)

编辑或新建:

/etc/logrotate.d/tomcat9

示例:

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

测试:

logrotate -d /etc/logrotate.d/tomcat9

✅ 方案二:禁用 catalina.out 输出

修改:

/etc/default/tomcat9

或 systemd:

/etc/systemd/system/tomcat9.service.d/override.conf

将 stdout 重定向到 /dev/null


✅ 方案三:使用 log4j / logback 管理日志

  • 不使用 System.out
  • 配置:
    <rollingFile>
        <maxFileSize>100MB</maxFileSize>
        <maxHistory>10</maxHistory>
    </rollingFile>
    

✅ 方案四:调高日志级别

/etc/tomcat9/logging.properties

.level = INFO

四、临时应急(磁盘已满时)

# 清空但不删文件
: > /var/log/tomcat9/catalina.out

# 或重启 tomcat
systemctl restart tomcat9

五、总结一句话

Debian 上 Tomcat 日志满,99% 是因为 catalina.out 没轮转 + 应用日志乱打。

如果你愿意,可以贴:

  • Tomcat 版本
  • 日志目录结构
  • logging.properties 或 logback 配置

我可以帮你精准改配置

0