温馨提示×

如何过滤debian apache日志内容

小樊
39
2026-10-04 06:59:22
栏目: 智能运维

在 Debian 上,Apache 日志通常位于:

  • 访问日志:/var/log/apache2/access.log
  • 错误日志:/var/log/apache2/error.log

“过滤日志内容”常见有几种场景,下面按用途给你最实用的做法。


一、按 IP 过滤

查看某个 IP 的访问记录

grep "192.168.1.100" /var/log/apache2/access.log

排除某个 IP(反向过滤)

grep -v "192.168.1.100" /var/log/apache2/access.log

二、按 URL / 路径过滤

查看访问 /admin 的日志

grep "GET /admin" /var/log/apache2/access.log

查看访问 .php 文件的请求

grep "\.php" /var/log/apache2/access.log

三、按 HTTP 状态码过滤

只看 404

grep " 404 " /var/log/apache2/access.log

只看 500 错误

grep " 500 " /var/log/apache2/access.log

Apache 日志中状态码前后有空格,用 " 404 " 更精确


四、按时间过滤(非常重要)

Debian Apache 日志默认格式包含时间,例如:

[10/Oct/2024:14:32:01 +0000]

查看某一天的日志

grep "10/Oct/2024" /var/log/apache2/access.log

查看某小时

grep "10/Oct/2024:14:" /var/log/apache2/access.log

五、使用 awk 做高级过滤(推荐)

只显示 IP 和请求路径

awk '{print $1, $7}' /var/log/apache2/access.log

统计访问最多的 IP

awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head

统计 404 最多的 URL

grep " 404 " /var/log/apache2/access.log | awk '{print $7}' | sort | uniq -c | sort -nr

六、实时过滤日志(排错常用)

tail -f /var/log/apache2/access.log | grep "192.168.1.100"

或只看错误:

tail -f /var/log/apache2/error.log

七、如果使用了 logrotate(.gz 日志)

旧日志可能是:

/var/log/apache2/access.log.1.gz

过滤压缩日志

zcat /var/log/apache2/access.log.1.gz | grep "404"

八、使用 apachectl / journalctl(错误日志)

如果是 systemd:

journalctl -u apache2

只看错误:

journalctl -u apache2 | grep error

如果你能说明 你想过滤什么(如:屏蔽蜘蛛、查攻击、看某用户、分析性能),我可以直接给你一条精准命令。

0 踩