CentOS 上 Java 日志的有效分析路径
一 快速定位与排查
ps -ef | grep java。tail -f /path/to/app.log | egrep --color=auto 'ERROR|WARN|Exception'。journalctl -u your-java.service --since "10 minutes ago" -e。top/htop、free -m、df -h、iostat -x 1 排除 CPU、内存、磁盘、IO 瓶颈导致的异常。二 日志规范与输出格式
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%line - %msg%n。三 集中化与可视化分析
四 日志轮转与保留策略
/opt/app/logs/*.log {
daily
rotate 14
compress
missingok
notifempty
create 0644 app app
copytruncate
}
说明:按天轮转、保留 14 天、压缩旧日志、支持空文件、轮转后保持原权限与属主;copytruncate 适用于不支持信号无缝切割的进程。logrotate -d /etc/logrotate.d/java(语法检查),logrotate -f /etc/logrotate.d/java(强制执行)。五 常见场景与命令清单
journalctl -u your-java.service --since "30 minutes ago" | grep -i errorgrep -i 'java.lang.OutOfMemoryError' /opt/app/logs/*.log 与 dmesg | tail -n 50grep -E 'ERROR|Exception' app.log | cut -d' ' -f5- | sort | uniq -c | sort -nr | head -5grep -i 'GC' gc.log 或启用 JVM GC 日志,关注 Full GC 频率与时长。jstack <PID> 与日志中的线程名/池名,定位 死锁、阻塞、线程耗尽。