在 CentOS 上 Java 日志过大,通常不是系统本身的问题,而是 日志配置、应用行为或运行环境 导致的。下面按常见原因 → 对应解决方案来说明。
现象
app.log 一直增长原因
Logback / Log4j2 / Log4j,但 没有配置滚动策略nohup java ... > app.log 直接重定向✅ 解决
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
现象
原因
DEBUG✅ 解决
<root level="INFO">
并限制第三方库:
<logger name="org.springframework" level="WARN"/>
<logger name="com.alibaba" level="WARN"/>
现象
原因
catch 里不断 log.error(...)✅ 解决
log.error("error", e); // 只打一次
现象
/logs 下出现巨大 gc.log原因
✅ 解决
-Xlog:gc*,gc+heap=info:file=gc.log:time,uptime,level,tags:filecount=5,filesize=50M
现象
nohup.out 巨大catalina.out原因
nohup java -jar app.jar > nohup.out &
✅ 解决
nohup java -jar app.jar >> app.log 2>&1 &
并配合日志框架
常见文件
catalina.outlocalhost.loghost-manager.log✅ 解决
logging.propertieslogrotate即使 Java 自己做了滚动,系统日志仍可能过大
✅ 示例 /etc/logrotate.d/java-app
/var/log/app/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
df -h
df -i
# 1. 看哪个日志最大
du -sh /var/log/*
# 2. 看 Java 进程
jps -l
# 3. 看日志配置
find . -name "logback.xml" -o -name "log4j2.xml"
# 4. 看 JVM 参数
ps -ef | grep java
Java 日志在 CentOS 过大,90% 是因为:没做日志滚动 + 日志级别太低 + 异常被反复打印。
如果你愿意,可以把:
java -jar / Tomcat / Docker)贴出来,我可以 直接帮你改到最优配置 ✅