过滤 Apache 日志内容通常有几种常见场景和做法,下面按用途给你一个实用清单。
查看某个 IP 的访问记录:
grep "192.168.1.100" access_log
排除某个 IP:
grep -v "192.168.1.100" access_log
只看访问 /api/ 的请求:
grep "GET /api/" access_log
排除静态资源(图片、css、js):
grep -v -E "\.(jpg|png|css|js|ico)$" access_log
只看 404:
awk '$9 == 404' access_log
看 500 错误:
grep " 500 " access_log
Apache 默认日志时间格式如:
[10/Oct/2024:13:22:11 +0800]
查看某时间段:
awk -F'[' '$2 >= "10/Oct/2024:13:00:00" && $2 < "10/Oct/2024:14:00:00"' access_log
SetEnvIf Request_URI "\.(gif|jpg|png|css|js)$" static
CustomLog logs/access_log combined env=!static
SetEnvIf Remote_Addr "192.168.1.100" dontlog
CustomLog logs/access_log combined env=!dontlog
goaccess access_log -o report.html
awk '{print $1}' access_log | sort | uniq -c | sort -nr | head
默认 combined 格式:
IP - - [时间] "请求" 状态码 大小 "Referer" "User-Agent"
如果你能告诉我:
我可以直接给你一条最合适的命令或配置。