温馨提示×

centos如何解读java日志

小樊
33
2026-09-21 09:34:49
栏目: 编程语言

在 CentOS 上“解读 Java 日志”,通常包含 日志在哪里、怎么看、怎么分析、常见问题怎么定位 几个方面。下面按实战角度说明。


一、Java 日志一般在哪

1. 应用自己输出的日志

常见位置(取决于应用配置):

/var/log/xxx/
/home/xxx/logs/
/opt/xxx/logs/

常见日志框架:

  • Log4j / Log4j2
  • Logback
  • JUL(java.util.logging)

日志文件通常类似:

app.log
app.log.2026-01-21
app-error.log

2. 标准输出 / 错误输出

如果 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


3. Tomcat 日志

/var/log/tomcat/
/opt/tomcat/logs/

catalina.out      # 核心日志
localhost.log
manager.log

二、常用查看命令(CentOS)

1. 实时查看

tail -f app.log

2. 查看最后 N 行

tail -n 200 app.log

3. 搜索关键字

grep -i "error" app.log
grep -C 5 "Exception" app.log

4. 按时间过滤

sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log

5. 大文件分屏

less app.log

常用:

  • G 跳末尾
  • ?关键字 向上搜
  • /关键字 向下搜

三、Java 日志格式怎么解读

典型一行日志:

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)

含义:

  • 时间:2026-01-21 10:12:33.521
  • 线程:http-nio-8080-exec-3
  • 日志级别:ERROR
  • 类名:c.x.UserService
  • 消息:用户查询失败
  • 异常栈:从下往上看调用链

四、日志级别含义

级别 说明
TRACE 最详细
DEBUG 调试信息
INFO 正常运行
WARN 警告但不影响
ERROR 出错
FATAL 严重错误

一般生产看 ERROR / WARN


五、常见问题如何看日志定位

1. OutOfMemoryError

java.lang.OutOfMemoryError: Java heap space

方向:

# 查看 JVM 内存
jmap -heap <pid>

# 生成堆转储
jmap -dump:format=b,file=heap.hprof <pid>

2. CPU 高

top
# 找到 java 进程 PID

top -Hp <pid>
# 找到高 CPU 线程

printf "%x\n" 线程ID
jstack <pid> | grep -A 20 十六进制

3. 连接超时 / 拒绝

日志常见:

Connection refused
Read timed out
Timeout waiting for connection

方向:

  • 防火墙
  • 服务是否启动
  • 端口监听
netstat -tunlp | grep 8080
ss -tunlp

4. 权限问题

Permission denied

常见于:

  • 日志目录无写权限
  • 文件属主不对
ls -l /var/log/xxx
chown -R user:user /var/log/xxx

六、CentOS 日志辅助工具

journald

journalctl -u java-app --since "2026-01-21 10:00"

logrotate

Java 日志常见轮转问题:

/etc/logrotate.d/

防止日志撑爆磁盘。


七、建议你这样排查(标准流程)

  1. 确认日志位置
  2. tail -f 实时观察
  3. 搜索 ERROR / Exception
  4. 看异常栈最上面业务代码
  5. 结合系统资源(CPU、内存、磁盘、网络)
  6. 必要时 jstack / jmap

如果你愿意,可以:

  • 贴一段 具体 Java 日志
  • 或说明 CentOS 版本 + Java 启动方式(jar / tomcat / systemd)

我可以直接帮你“逐行解读”。

0