Tomcat 日志占用空间过大,通常是因为 日志级别太低、日志未切割、应用打印过多日志、或 access log 未限制。下面按「常见原因 → 解决方式」给你一套实用方案。
Tomcat 常见日志有:
catalina.out(最常用,最容易爆)catalina.log / localhost.logaccess_log(访问日志)du -sh /tomcat/logs/*
/etc/logrotate.d/tomcat
示例:
/usr/local/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
copytruncate
}
修改 bin/catalina.sh:
CATALINA_OUT=/dev/null
(适合日志已由 log4j/logback 管理)
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"(保留天数)conf/logging.properties
.level = INFO
org.apache.catalina.level = WARN
不建议生产用 FINE / DEBUG
<root level="INFO">
<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
如果你愿意,可以告诉我:
我可以直接给你可复制的配置。