在 Linux 下分析 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 |
管理后台日志 |
tail -f catalina.out
tail -n 500 catalina.out
grep -n "Exception" catalina.out
sed -n '/2024-01-21 10:00/,/2024-01-21 11:00/p' catalina.out
grep -A 30 "Exception" catalina.out
OutOfMemoryError → 内存不足StackOverflowError → 递归ClassNotFoundException → 包缺失SQLException → 数据库问题wc -l localhost_access_log.2024-01-21.txt
awk '{print $1}' localhost_access_log.* | sort | uniq -c | sort -nr | head
grep " 500 " localhost_access_log.*
如果 access log 配置了 %D:
awk '{print $NF}' access_log | sort -nr | head
awk '{print $4}' access_log | cut -c 2-15 | uniq -c
cp catalina.out catalina.out.bak
> catalina.out
logrotatelogging.propertiesgrep / awk / sedless -S(不换行查看)jstack 分析线程jmap 分析内存MAT(Eclipse Memory Analyzer)tail -f catalina.outgrep Exceptionjstack 抓线程如果你愿意,可以:
我可以直接帮你分析。