在 CentOS 上处理 Java 日志,通常可以从 日志来源、日志位置、日志分析与清理、日志轮转(logrotate) 以及 常见问题排查 几个方面来做。下面给你一个比较完整的实战总结。
取决于你使用的日志框架:
| 框架 | 常见日志文件 |
|---|---|
| Log4j / Log4j2 | logs/app.log、logs/error.log |
| Logback | logs/app.log |
| JUL(java.util.logging) | 自定义路径 |
通常位于:
/opt/app/logs/
/var/log/app/
~/project/logs/
/opt/tomcat/logs/
常见文件:
catalina.outlocalhost.logmanager.log如果启动时开启了 GC 日志:
java -Xlog:gc*:file=/var/log/app/gc.log
如果是用 systemd 管理的 Java 服务:
journalctl -u your-java-service.service
tail -f /var/log/app/app.log
grep -i error /var/log/app/app.log
grep -i exception /var/log/app/app.log
tail -n 200 /var/log/app/app.log
less /var/log/app/app.log
/var/log/app/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
说明:
daily:每天轮转rotate 7:保留 7 份compress:压缩旧日志copytruncate:适合 Java 进程不关闭文件句柄的情况logrotate -d /etc/logrotate.d/java-app
✅ 推荐做法:
catalina.out 或 copytruncatefind /var/log/app -name "*.log.*" -mtime +30 -delete
df -h
du -sh /var/log/*
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/app/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/app/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
避免生产环境使用 DEBUG
检查:
df -h
ls -ld /var/log/app
-XX:ErrorFile=/var/log/app/hs_err_pid.log✅ 最佳实践
logrotatesystemd + journalctl如果你愿意,可以告诉我:
我可以帮你 直接给出可用的 logrotate 配置或日志框架配置。