Tomcat 日志过大可以从临时清理、自动滚动、长期策略三个层面来处理。下面按常见场景说明。
Tomcat 日志一般在:
$TOMCAT_HOME/logs/
常见文件:
catalina.outcatalina.yyyy-mm-dd.loglocalhost.yyyy-mm-dd.loglocalhost_access_log.yyyy-mm-dd.txt可直接删除旧日期文件:
cd $TOMCAT_HOME/logs
rm -f catalina.2024-*.log
⚠️ 注意:
catalina.out(正在写入)catalina.out 用清空而不是删除:> catalina.out
或
cat /dev/null > catalina.out
catalina.out(最常见问题)logrotate(Linux 推荐)新建配置:
/etc/logrotate.d/tomcat
内容示例:
/opt/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
copytruncate
}
说明:
copytruncate:不重启 Tomcat 也能切割rotate 7:保留 7 天在 catalina.sh 中用 cronolog 或 logrotate 替代直接写 catalina.out
conf/logging.properties示例(限制大小 & 天数):
1catalina.org.apache.juli.FileHandler.maxDays = 7
1catalina.org.apache.juli.FileHandler.rotationLimitSize = 10485760
maxDays:保留天数rotationLimitSize:单文件大小(字节)conf/server.xml<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
rotatable="true"
maxDays="7"
pattern="%h %l %u %t "%r" %s %b" />
关键参数:
rotatable="true":按天滚动maxDays="7":只保留 7 天如果是 业务日志太大(不是 Tomcat 本身):
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
✅ 最佳实践:
catalina.out → logrotate + copytruncatemaxDaysmaxDays=7如果你愿意,可以告诉我:
catalina.out?access log?)我可以给你一套精确可复制的配置。