在 CentOS 上“解读 Java 日志”,通常包含 日志在哪里、怎么看、怎么分析、常见问题怎么定位 几个方面。下面按实战角度说明。
常见位置(取决于应用配置):
/var/log/xxx/
/home/xxx/logs/
/opt/xxx/logs/
常见日志框架:
日志文件通常类似:
app.log
app.log.2026-01-21
app-error.log
如果 Java 是前台或 systemd 启动:
# systemd 管理的服务
journalctl -u your-java-service
# 查看实时日志
journalctl -u your-java-service -f
如果是 nohup 启动:
nohup java -jar app.jar > app.out 2>&1 &
日志就在 app.out
/var/log/tomcat/
/opt/tomcat/logs/
catalina.out # 核心日志
localhost.log
manager.log
tail -f app.log
tail -n 200 app.log
grep -i "error" app.log
grep -C 5 "Exception" app.log
sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log
less app.log
常用:
G 跳末尾?关键字 向上搜/关键字 向下搜典型一行日志:
2026-01-21 10:12:33.521 [http-nio-8080-exec-3] ERROR c.x.UserService - 用户查询失败
java.lang.NullPointerException
at c.x.UserService.getUser(UserService.java:45)
含义:
| 级别 | 说明 |
|---|---|
| TRACE | 最详细 |
| DEBUG | 调试信息 |
| INFO | 正常运行 |
| WARN | 警告但不影响 |
| ERROR | 出错 |
| FATAL | 严重错误 |
一般生产看 ERROR / WARN
java.lang.OutOfMemoryError: Java heap space
方向:
# 查看 JVM 内存
jmap -heap <pid>
# 生成堆转储
jmap -dump:format=b,file=heap.hprof <pid>
top
# 找到 java 进程 PID
top -Hp <pid>
# 找到高 CPU 线程
printf "%x\n" 线程ID
jstack <pid> | grep -A 20 十六进制
日志常见:
Connection refused
Read timed out
Timeout waiting for connection
方向:
netstat -tunlp | grep 8080
ss -tunlp
Permission denied
常见于:
ls -l /var/log/xxx
chown -R user:user /var/log/xxx
journalctl -u java-app --since "2026-01-21 10:00"
Java 日志常见轮转问题:
/etc/logrotate.d/
防止日志撑爆磁盘。
tail -f 实时观察ERROR / Exceptionjstack / jmap如果你愿意,可以:
我可以直接帮你“逐行解读”。