在 CentOS 上 Java 日志过大,通常不是 CentOS 本身的问题,而是 Java 应用日志配置或使用方式不当 导致的。常见原因和对应解决办法如下:
System.out.println() / e.printStackTrace()catalina.out✅ 解决:
System.out典型问题:
log4j.properties 或 logback.xml 没有设置大小限制✅ 解决(示例):
Logback
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>7</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
✅ 解决:
<root level="INFO">
catalina.out 无限增长CentOS + Tomcat 经典问题:
catalina.out 不会自动切割✅ 解决:
logrotate/etc/logrotate.d/tomcat
示例:
/opt/tomcat/logs/catalina.out {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
catch 里又抛异常✅ 解决:
-XX:+PrintGC -XX:+PrintGCDetails
长时间运行会非常大
✅ 解决:
-Xlog:gc*:file=gc.log:time,uptime,level,tags:filecount=5,filesize=100M
# 查看大文件
du -sh /var/log/*
find / -name "*.log" -size +100M
# 查看正在写入的日志
lsof | grep log
# 实时查看增长
tail -f app.log
CentOS Java 日志过大 = 日志没切割 + 级别太低 + stdout 滥用
如果你愿意,可以贴:
我可以直接帮你改配置。