在 CentOS 上排查 Java 日志报错,一般可以按下面几个步骤来,从哪里看日志 → 怎么看 → 常见错误怎么定位。
取决于你用的日志框架和配置:
Logback / Log4j2
<file>/var/log/app/app.log</file>
/var/log/
/opt/xxx/logs/
~/logs/
Spring Boot
/var/log/application.log
或当前目录:
./logs/application.log
# systemd 管理
journalctl -u your-service-name -f
# 或
/var/log/messages
/var/log/syslog
/var/log/tomcat/
/opt/tomcat/logs/
重点看:
catalina.outlocalhost.log# 实时查看
tail -f /var/log/app/app.log
# 看最后 200 行
tail -n 200 /var/log/app/app.log
# 搜关键字
grep -i error /var/log/app/app.log
grep -C 10 Exception /var/log/app/app.log
Java 报错一般长这样:
2024-01-01 10:00:00 ERROR [main] c.x.App - start failed
java.lang.NullPointerException: null
at com.x.service.UserService.getUser(UserService.java:25)
at com.x.App.main(App.java:15)
看这 3 个地方:
NullPointerExceptionnullUserService.java:25
| 异常 | 含义 |
|---|---|
| NullPointerException | 对象没初始化 |
| ClassNotFoundException | 缺 jar 包 |
| NoClassDefFoundError | 类编译在但运行时没了 |
| OutOfMemoryError | 内存不够 |
| StackOverflowError | 死循环 / 递归 |
| BindException | 端口被占用 |
netstat -tunlp | grep 8080
或
ss -tunlp | grep 8080
java -jar app.jar
直接前台跑,看控制台错误。
free -h
top
Java OOM 时看:
-XX:+HeapDumpOnOutOfMemoryError
journalctl -u xxx -n 200
tail -f 应用日志
grep Exception 日志
如果你愿意,可以把具体报错日志贴出来(哪怕是几行),我可以直接帮你定位是哪一类问题。