下面按常见需求给你讲几种“过滤 Tomcat 访问日志”的方法,从最简单到偏运维/开发级别。
Tomcat 默认访问日志是 Access Log(不是 catalina.out)。
常见位置:
$TOMCAT_HOME/logs/access_log.xxxx-xx-xx.txt
# 或
localhost_access_log.xxxx-xx-xx.txt
查看某个 IP 的访问:
grep "192.168.1.100" access_log.2026-01-21.txt
排除某个 IP:
grep -v "127.0.0.1" access_log.2026-01-21.txt
只看某个接口:
grep "/api/login" access_log.2026-01-21.txt
排除静态资源(css/js/png):
grep -v -E "\.(css|js|png|jpg|gif)$" access_log.2026-01-21.txt
只看 500 错误:
grep " 500 " access_log.2026-01-21.txt
只看 4xx:
grep -E " 4[0-9]{2} " access_log.2026-01-21.txt
比如只看重 10 点的:
grep "21/Jan/2026:10:" access_log.2026-01-21.txt
awk '{print $1}' access_log.2026-01-21.txt | sort | uniq -c | sort -nr | head
awk '{print $7}' access_log.2026-01-21.txt | sort | uniq -c | sort -nr
如果你不想记录某些访问,可以改 server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
conditionIf="notStatic" />
或者在 AccessLogValve 中:
conditionIfconditionUnless来控制是否记录。
goaccess access_log.2026-01-21.txt -o report.html
| 需求 | 命令 |
|---|---|
| 某 IP 访问 | grep ip log |
| 排除 IP | grep -v ip log |
| 某接口 | grep /api log |
| 错误请求 | grep " 500 " log |
| 统计 IP | awk + uniq |
如果你能告诉我:
我可以直接给你可复制的配置或脚本。