温馨提示×

tomcat日志过大怎么处理

小樊
38
2026-10-02 16:15:02
栏目: 智能运维

Tomcat 日志过大是生产环境常见问题,可以从配置优化、日志切割、清理策略、代码层面几个方面来处理。


一、Tomcat 自带日志说明

Tomcat 常见日志文件:

  • catalina.out:最容易导致过大(所有控制台输出)
  • catalina.log / localhost.log / host-manager.log / manager.log
  • access_log(访问日志)

二、核心处理方案

1️⃣ 切割 catalina.out(最重要)

catalina.out 默认不会自动切割,最容易爆盘。

方式一:使用 logrotate(Linux 推荐)

/etc/logrotate.d/tomcat

示例:

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

copytruncate 很关键,避免 Tomcat 写文件句柄失效

方式二:改用 log4j / logback 输出

不直接写 catalina.out,由日志框架控制。


2️⃣ 修改 logging.properties

减少不必要的日志:

# 降低级别
.level = INFO
org.apache.catalina.level = WARNING

3️⃣ 限制 Access Log

在 server.xml:

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="localhost_access_log"
       suffix=".txt"
       rotatable="true"
       maxDays="30" />

maxDays 控制保留天数。


4️⃣ 应用日志优化(重点)

很多“Tomcat 日志大”其实是 应用日志:

  • 使用 Logback / Log4j2
  • 配置:
    • 按大小 + 时间滚动
    • 控制级别(避免 DEBUG)
    • 异步日志

示例(Logback):

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>logs/app-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <maxFileSize>100MB</maxFileSize>
    <maxHistory>30</maxHistory>
  </rollingPolicy>
</appender>

5️⃣ 自动清理脚本(兜底)

find /opt/tomcat/logs -name "*.log" -mtime +30 -delete

加 crontab:

0 2 * * * /bin/bash /opt/clean_tomcat_logs.sh

三、不推荐的做法

❌ 直接 rm catalina.out(可能导致写失败)
❌ 完全关闭日志(不利于排查问题)


四、推荐组合方案

✅ catalina.out → logrotate 切割
✅ 应用日志 → Logback 滚动
✅ access log → maxDays 限制
✅ 定期清理脚本


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

  • Tomcat 版本
  • 使用的日志框架
  • 是 catalina.out 还是应用日志大

我可以给你一套可直接用的配置。

0 踩