在 Ubuntu 上解析 Tomcat 日志,通常包含 定位日志文件、了解日志格式、使用命令行工具分析、以及借助工具/脚本结构化解析。下面按实用场景给你一个完整指南。
Tomcat 日志默认在:
/var/log/tomcat9/ # Ubuntu 默认 Tomcat 9
/opt/tomcat/logs/ # 手动安装
常见日志文件:
| 文件 | 说明 |
|---|---|
catalina.out |
标准输出,最重要 |
catalina.YYYY-MM-DD.log |
按天滚动 |
localhost.log |
应用级异常 |
access_log |
访问日志(类似 Nginx) |
2024-01-12 10:23:45.123 SEVERE [http-nio-8080-exec-3] org.apache.catalina.core.ContainerBase
java.lang.NullPointerException
at com.example.Test.doGet(Test.java:25)
常见级别:
127.0.0.1 - - [12/Jan/2024:10:23:45 +0800] "GET /api/user HTTP/1.1" 200 1234
tail -f /var/log/tomcat9/catalina.out
grep -n "SEVERE" catalina.out
sed -n '/2024-01-12 10:00/,/2024-01-12 11:00/p' catalina.out
grep -c "Exception" catalina.out
awk '{print $9}' access_log | sort | uniq -c
journalctl(systemd)journalctl -u tomcat9
journalctl -u tomcat9 --since "2024-01-12 10:00"
grep + awk 提取字段awk '/SEVERE/ {print $1, $2, $4}' catalina.out
import re
pattern = re.compile(r'(?P<time>[\d\-: .]+) (?P<level>\w+) .*?(?P<msg>.*)')
with open('/var/log/tomcat9/catalina.out') as f:
for line in f:
m = pattern.search(line)
if m:
print(m.groupdict())
/etc/logrotate.d/tomcat9
catalina.out 看 SEVERElocalhost.log 看应用异常access_log 看请求是否正常hs_err_pid如果你有 具体日志内容 或想 按某种格式解析(JSON / 正则 / 字段提取),可以直接贴出来,我可以帮你写解析规则。