温馨提示×

centos java日志怎么定位问题

小樊
44
2026-09-12 00:23:12
栏目: 编程语言

在 CentOS 上用 Java 日志定位问题,通常可以按下面几个步骤来做:


一、先确认日志在哪里

1. 常见 Java 日志位置

  • 应用自己配置的日志目录
    • 如:/opt/app/logs//var/log/app/
  • 系统日志
    • /var/log/messages
    • /var/log/syslog(CentOS 一般没有,主要是 messages)
  • systemd 管理的服务
    journalctl -u your-java-service.service -n 200
    journalctl -u your-java-service.service --since "2024-01-01 10:00"
    

2. 查看 Java 进程

ps -ef | grep java

确认:

  • 启动参数里有没有 -Dlog.path=
  • 有没有 -Xloggc:

二、常用日志文件类型

1. 应用日志(最常见)

如:

  • app.log
  • error.log
  • info.log

查看方式:

tail -f app.log
tail -n 500 error.log
grep "ERROR" app.log

2. GC 日志(性能问题)

如果启动参数有:

-Xloggc:/var/log/app/gc.log

查看:

less /var/log/app/gc.log

关注:

  • Full GC 频繁
  • GC 时间长

三、按问题类型定位

1. 服务起不来

journalctl -u your-service -n 100

或看启动日志:

cat nohup.out

重点看:

  • Exception
  • Caused by
  • Permission denied
  • Address already in use

2. 报错但服务在跑

grep -i "exception" app.log
grep -A 20 "NullPointerException" app.log

3. 性能慢 / CPU 高

top

找到 Java 进程 PID,再看线程:

top -Hp PID

把线程 ID 转成 16 进制:

printf "%x\n" 线程ID

再 dump 线程:

jstack PID | grep -A 30 0x线程id

4. 内存溢出(OOM)

日志里通常会有:

java.lang.OutOfMemoryError

配合:

jmap -heap PID
jmap -dump:live,format=b,file=heap.hprof PID

用 MAT / VisualVM 分析。


四、实用排查命令汇总

# 实时看日志
tail -f app.log

# 按时间看
grep "2024-01-01 10:" app.log

# 看错误
grep -i error app.log

# 看堆栈
grep -A 30 "Exception" app.log

# 看某个接口
grep "order/create" app.log

五、建议的日志规范(避免难查)

  • logback / log4j2
  • info / warn / error
  • 打印 traceId
  • 异常必须打印完整堆栈

如果你愿意,可以把具体报错日志或现象贴出来(比如 OOM、连接超时、CPU 100%),我可以直接帮你定位。

0