温馨提示×

centos怎样分析java日志

小樊
70
2026-09-03 01:20:26
栏目: 编程语言

在 CentOS 上分析 Java 日志,通常可以从日志文件位置、常用分析命令、工具、以及针对 Java 应用(如 Tomcat / Spring Boot)的特殊点几个方面来做。下面给你一套实用方案。


一、先确认 Java 日志在哪

1. 常见日志位置

  • Tomcat

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

    关键文件:

    • catalina.out(最重要)
    • localhost.log
    • manager.log
  • Spring Boot

    • 默认:/var/log/appname/
    • 或当前目录下的 logs/
    • 或 nohup.out
  • 系统级 Java 崩溃

    /var/log/messages
    hs_err_pid*.log(JVM 崩溃日志)
    

二、基础日志分析命令(CentOS 必备)

1. 实时查看日志

tail -f catalina.out

2. 查找异常

grep -n "Exception" catalina.out
grep -n "ERROR" app.log

3. 查看某时间段的日志

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

4. 统计异常出现次数

grep "NullPointerException" app.log | wc -l

5. 按线程 / IP 分析(如请求慢)

grep "timeout" app.log | sort | uniq -c | sort -nr

三、Java 日志重点关注内容

1. 异常堆栈

重点看:

  • Caused by
  • at com.xxx.xxx
  • OutOfMemoryError
  • StackOverflowError

示例:

java.lang.OutOfMemoryError: Java heap space

2. GC 日志(性能问题)

如果开启了:

-XX:+PrintGCDetails -Xloggc:/var/log/java/gc.log

分析:

grep "Full GC" gc.log

四、常用 Java 日志分析工具

1. 命令行工具

  • less(大文件友好)
  • awk(统计)
  • zgrep(分析压缩日志)
zgrep "ERROR" app.log.2026-01-*.gz

2. 专业工具(推荐)

  • ELK(Elasticsearch + Logstash + Kibana)
  • Graylog
  • Prometheus + Loki
  • Spring Boot Admin

五、结合 Java 进程分析(非常重要)

1. 查看 Java 进程

jps -l
ps -ef | grep java

2. 查看线程占用

top -Hp <pid>

3. 导出线程栈(卡死必看)

jstack <pid> > thread.log

4. 内存分析

jmap -heap <pid>
jmap -dump:format=b,file=heap.hprof <pid>

用 MAT / VisualVM 分析 heap.hprof


六、实战示例:Tomcat 卡死分析流程

  1. tail -f catalina.out
  2. top 看 CPU
  3. jstack pid 看线程
  4. 找 BLOCKED / WAITING
  5. 对应代码修复

七、建议的日志规范(长期更好分析)

  • 使用 Logback / Log4j2
  • 按天滚动
  • 区分 info / warn / error
  • 打印 traceId

如果你愿意,可以:

  • 发一段 具体日志
  • 或说明是 Tomcat / Spring Boot / 微服务
  • 或说现象(OOM / 慢 / 频繁重启)

我可以帮你直接分析日志内容。

0 踩