在 CentOS 上“Java 日志把磁盘写满”是非常常见的问题,通常不是 CentOS 本身的问题,而是 Java 应用、日志框架或系统配置 导致的。下面按常见原因 → 排查方法 → 解决建议来说明。
DEBUG / TRACE 级别在生产环境开启✅ 典型表现:
application.log 几分钟几个 GB✅ 解决:
# logback / log4j2
<root level="INFO">
很多 Java 程序:
nohup java > app.log结果:
✅ 解决方式:
/etc/logrotate.d/myapp
示例:
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
RollingFileAppenderRollingFile例如:
catch (Exception e) {
log.error("error", e);
}
✅ 表现:
✅ 解决:
以下日志都可能爆炸:
-Xloggc:/var/log/gc.log
-XX:+UseGCLogFileRotation✅ 正确写法:
-Xloggc:/var/log/gc.log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=5
-XX:GCLogFileSize=100M
catalina.out 无限增长✅ 解决:
catalina.out 用 logrotatelogging:
file:
max-size: 100MB
max-history: 7
CentOS 默认:
/var 可能只有 10–20G/var/log✅ 排查:
df -h
du -sh /var/log/*
# 看哪个目录最大
du -sh /* 2>/dev/null
# 看 Java 进程
ps -ef | grep java
# 实时看日志增长
watch -n 1 'ls -lh /var/log/app.log'
# 看磁盘
df -h
CentOS 上 Java 日志满,99% 是因为:日志没轮转 + 日志级别太低 + 异常狂打
如果你愿意,可以告诉我:
我可以帮你 直接写一份可用的 logrotate 或日志配置。