温馨提示×

linux怎么分析tomcat日志

小樊
42
2026-10-05 13:43:16
栏目: 智能运维

在 Linux 下分析 Tomcat 日志,通常思路是:先弄清楚 Tomcat 有哪些日志,再用命令行工具或可视化工具分析。下面按实战角度说明。


一、Tomcat 常见日志位置

默认在:

$TOMCAT_HOME/logs/

常见日志文件:

文件 说明
catalina.out 最常用,标准输出 + 错误
catalina.YYYY-MM-DD.log 按天滚动的 catalina 日志
localhost.YYYY-MM-DD.log 应用级异常
localhost_access_log.YYYY-MM-DD.txt 访问日志(类似 Nginx access log)
host-manager / manager 管理后台日志

二、基础命令行分析(必会)

1️⃣ 实时查看日志

tail -f catalina.out

2️⃣ 查看最近 500 行

tail -n 500 catalina.out

3️⃣ 搜索关键字(报错、Exception)

grep -n "Exception" catalina.out

4️⃣ 查看某个时间段的日志

sed -n '/2024-01-21 10:00/,/2024-01-21 11:00/p' catalina.out

三、错误信息分析(重点)

1️⃣ 查看完整异常堆栈

grep -A 30 "Exception" catalina.out

2️⃣ 常见错误类型

  • OutOfMemoryError → 内存不足
  • StackOverflowError → 递归
  • ClassNotFoundException → 包缺失
  • SQLException → 数据库问题

四、访问日志分析(access log)

1️⃣ 查看访问量

wc -l localhost_access_log.2024-01-21.txt

2️⃣ 统计访问最多的 IP

awk '{print $1}' localhost_access_log.* | sort | uniq -c | sort -nr | head

3️⃣ 统计 500 错误

grep " 500 " localhost_access_log.*

4️⃣ 统计慢请求(响应时间)

如果 access log 配置了 %D:

awk '{print $NF}' access_log | sort -nr | head

五、按时间分析(非常实用)

每小时请求数

awk '{print $4}' access_log | cut -c 2-15 | uniq -c

六、日志分割与清理

1️⃣ 手动切割

cp catalina.out catalina.out.bak
> catalina.out

2️⃣ 自动切割(推荐)

  • logrotate
  • Tomcat logging.properties

七、高级分析工具(推荐)

1️⃣ 文本分析

  • grep / awk / sed
  • less -S(不换行查看)

2️⃣ 可视化

  • ELK(Elasticsearch + Logstash + Kibana)
  • Grafana + Loki
  • Sonar(商业)

3️⃣ Java 专用

  • jstack 分析线程
  • jmap 分析内存
  • MAT(Eclipse Memory Analyzer)

八、实战排查流程(建议收藏)

  1. tail -f catalina.out
  2. 复现问题
  3. grep Exception
  4. 看是否 OOM / 数据库 / 网络
  5. 结合 access log 看请求特征
  6. 必要时 jstack 抓线程

如果你愿意,可以:

  • 贴一段 Tomcat 报错日志
  • 或说明你是 查性能 / 查异常 / 查攻击

我可以直接帮你分析。

0 踩