温馨提示×

tomcat日志占用空间大怎么办

小樊
41
2026-10-18 06:54:01
栏目: 云计算

Tomcat 日志占用空间过大,通常是因为 日志级别太低、日志未切割、应用打印过多日志、或 access log 未限制。下面按「常见原因 → 解决方式」给你一套实用方案。


一、先确认是哪种日志占空间

Tomcat 常见日志有:

  • catalina.out(最常用,最容易爆)
  • catalina.log / localhost.log
  • access_log(访问日志)
  • 应用自身日志(log4j / logback)
du -sh /tomcat/logs/*

二、catalina.out 过大(最常见)

方案 1:使用 logrotate(推荐,Linux)

/etc/logrotate.d/tomcat

示例:

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

方案 2:禁止输出到 catalina.out

修改 bin/catalina.sh:

CATALINA_OUT=/dev/null

(适合日志已由 log4j/logback 管理)


三、Access Log 太大

关闭或限制 access log

conf/server.xml

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="localhost_access_log"
       suffix=".txt"
       pattern="%h %l %u %t "%r" %s %b"
       rotate="true"
       maxDays="7" />

✅ 关键参数:

  • rotate="true"
  • maxDays="7"(保留天数)

四、日志级别太高

修改 logging.properties

conf/logging.properties

.level = INFO
org.apache.catalina.level = WARN

不建议生产用 FINE / DEBUG


五、应用日志失控(log4j / logback)

1. 控制级别

<root level="INFO">

2. 加滚动策略(示例 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>

六、临时清理(不重启)

: > catalina.out

或

truncate -s 0 catalina.out

七、长期建议

✅ 日志集中化(ELK / Loki)
✅ 只本地留短期日志
✅ 严禁 System.out.println


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

  • Tomcat 版本
  • Linux 还是 Windows
  • 哪种日志最大(catalina.out / access_log / 应用日志)

我可以直接给你可复制的配置。

0 踩