温馨提示×

ubuntu tomcat日志如何解析

小樊
48
2026-09-27 18:28:23
栏目: 智能运维

在 Ubuntu 上解析 Tomcat 日志,通常包含 定位日志文件、了解日志格式、使用命令行工具分析、以及借助工具/脚本结构化解析。下面按实用场景给你一个完整指南。


一、Tomcat 日志在哪里(Ubuntu)

Tomcat 日志默认在:

/var/log/tomcat9/        # Ubuntu 默认 Tomcat 9
/opt/tomcat/logs/        # 手动安装

常见日志文件:

文件 说明
catalina.out 标准输出,最重要
catalina.YYYY-MM-DD.log 按天滚动
localhost.log 应用级异常
access_log 访问日志(类似 Nginx)

二、Tomcat 日志格式说明

1. catalina.out 示例

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)

常见级别:

  • INFO
  • WARNING
  • SEVERE(错误)

2. access_log(默认格式)

127.0.0.1 - - [12/Jan/2024:10:23:45 +0800] "GET /api/user HTTP/1.1" 200 1234

三、基础命令行解析(最常用)

1. 实时查看

tail -f /var/log/tomcat9/catalina.out

2. 查看 ERROR / SEVERE

grep -n "SEVERE" catalina.out

3. 按时间过滤

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

4. 统计异常数量

grep -c "Exception" catalina.out

5. 统计访问状态码

awk '{print $9}' access_log | sort | uniq -c

四、结构化解析(推荐)

方法 1:用 journalctl(systemd)

journalctl -u tomcat9
journalctl -u tomcat9 --since "2024-01-12 10:00"

方法 2:用 grep + awk 提取字段

awk '/SEVERE/ {print $1, $2, $4}' catalina.out

方法 3:Python 解析(适合复杂分析)

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())

五、高级方案(生产环境)

1. ELK / Grafana

  • Filebeat 收集 Tomcat 日志
  • Logstash 解析
  • Kibana 可视化

2. Logrotate(避免日志爆炸)

/etc/logrotate.d/tomcat9

六、常见问题排查顺序

  1. catalina.out 看 SEVERE
  2. localhost.log 看应用异常
  3. access_log 看请求是否正常
  4. 内存/OOM → 看 hs_err_pid

如果你有 具体日志内容 或想 按某种格式解析(JSON / 正则 / 字段提取),可以直接贴出来,我可以帮你写解析规则。

0 踩