在 Ubuntu 上,Tomcat 日志过大是常见问题,通常来自以下几个日志文件:
catalina.out(最常见、最容易爆)catalina.loglocalhost.loghost-manager.logmanager.logaccess_log(访问日志)下面按推荐程度给你几种处理方式。
Ubuntu 自带 logrotate,非常适合 Tomcat。
sudo vi /etc/logrotate.d/tomcat
示例(假设你 Tomcat 在 /opt/tomcat,用户是 tomcat):
/opt/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
copytruncate
}
/opt/tomcat/logs/*.log {
daily
rotate 7
missingok
notifempty
compress
copytruncate
}
sudo logrotate -d /etc/logrotate.d/tomcat
✅ 优点:
catalina.out 是 stdout/stderr,不受 logging 配置控制。
bin/catalina.sh找到:
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
改成:
CATALINA_OUT=/dev/null
⚠️ 会丢失部分错误日志,不推荐生产环境
检查:
System.out.println()log4j / logback 是否输出到 console✅ 正确做法:
log4j / logback编辑:
sudo vi /opt/tomcat/conf/logging.properties
常见优化:
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 7
可限制保留天数。
编辑:
sudo vi /opt/tomcat/conf/server.xml
找到:
<Valve className="org.apache.catalina.valves.AccessLogValve" />
可加:
maxDays="7"
或直接关闭(不推荐):
<!-- 注释掉 -->
sudo systemctl stop tomcat
sudo truncate -s 0 /opt/tomcat/logs/catalina.out
sudo systemctl start tomcat
或:
echo > /opt/tomcat/logs/catalina.out
⚠️ 只是临时救急
✅ 最佳实践
logrotatecatalina.outlogback/log4j2maxDays如果你愿意,可以告诉我:
我可以直接帮你写一份 可用的 logrotate 配置。