在 Ubuntu 上 Tomcat 日志过大,通常有以下几种常见原因和对应处理方式,你可以按情况选择:
Tomcat 常见日志:
catalina.out(最容易暴涨)catalina.yyyy-mm-dd.loglocalhost.*.logaccess_log(访问日志)查看大小:
du -sh /var/log/tomcat9/*
(路径可能是 /var/log/tomcat9 或 /opt/tomcat/logs)
Tomcat 一般已自带 logrotate 配置:
cat /etc/logrotate.d/tomcat9
如果没有,可新建:
sudo vim /etc/logrotate.d/tomcat-custom
示例:
/opt/tomcat/logs/catalina.out {
daily
missingok
rotate 7
compress
notifempty
copytruncate
}
解释:
copytruncate:不重启 Tomcat 直接截断日志(最重要)compress:压缩旧日志rotate 7:保留 7 天手动测试:
sudo logrotate -f /etc/logrotate.d/tomcat9
修改:
sudo vim /opt/tomcat/bin/catalina.sh
找到:
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
改成:
CATALINA_OUT=/dev/null
⚠️ 会丢失控制台输出,但日志仍在 catalina.*.log
编辑:
sudo vim /opt/tomcat/conf/logging.properties
减少级别:
.level = INFO
或关闭某些 handler。
编辑:
sudo vim /opt/tomcat/conf/server.xml
找到:
<Valve className="org.apache.catalina.valves.AccessLogValve" />
可:
<!-- -->如果是 Spring Boot / Java 项目:
logback.xml / log4j2.xmlRollingFileAppender示例(logback):
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
sudo truncate -s 0 /opt/tomcat/logs/catalina.out
生产环境最稳:
logrotate + copytruncatecatalina.out 控制输出如果你愿意,可以告诉我:
我可以给你一份可直接用的配置。