温馨提示×

怎么过滤Linux日志内容

小樊
35
2026-08-02 06:35:06
栏目: 智能运维

在 Linux 中过滤日志内容非常常见,常用工具包括 grep、awk、sed、less、tail、journalctl 等。下面按常见场景给你整理一份实用指南。


一、用 grep 过滤日志(最常用)

1️⃣ 按关键词过滤

grep "error" /var/log/messages

忽略大小写:

grep -i "error" /var/log/messages

2️⃣ 显示匹配行的上下文

grep -C 5 "error" app.log     # 前后各5行
grep -B 5 "error" app.log     # 前5行
grep -A 5 "error" app.log     # 后5行

3️⃣ 过滤多个关键词

grep -E "error|fail|exception" app.log

4️⃣ 排除某些内容

grep -v "info" app.log

5️⃣ 递归过滤目录下的日志

grep -r "error" /var/log/

二、按时间过滤日志

1️⃣ 用 sed 按时间段过滤

假设日志格式:

2025-01-20 10:00:01 ...
sed -n '/2025-01-20 10:00/,/2025-01-20 11:00/p' app.log

2️⃣ 用 awk 按时间过滤

awk '/2025-01-20 10:/' app.log

三、实时查看并过滤日志(tail + grep)

tail -f /var/log/nginx/access.log | grep "404"

只看某个 IP:

tail -f access.log | grep "192.168.1.1"

四、用 awk 做高级过滤

1️⃣ 按列过滤(如第 9 列是 404)

awk '$9 == 404' access.log

2️⃣ 条件组合

awk '$9 >= 500 && /error/' app.log

五、查看 systemd 日志(journalctl)

1️⃣ 按服务过滤

journalctl -u nginx

2️⃣ 按时间过滤

journalctl --since "2025-01-20 10:00" --until "2025-01-20 11:00"

3️⃣ 按级别过滤(错误)

journalctl -p err

六、分页查看并搜索(less)

less app.log

常用操作:

  • /error 搜索
  • n 下一个
  • N 上一个
  • q 退出

七、常见日志文件位置速查

日志 路径
系统日志 /var/log/messages / /var/log/syslog
安全日志 /var/log/secure
Nginx /var/log/nginx/
Docker journalctl -u docker
应用日志 通常在 /var/log/app/

八、实战示例

✅ 查看今天 Nginx 的 500 错误

grep " 500 " /var/log/nginx/access.log | grep "$(date +%d/%b/%Y)"

✅ 过滤 Java 异常

grep -A 10 "Exception" app.log

如果你有 具体日志格式想过滤的具体内容(比如 IP、状态码、某个时间段),可以直接贴一段日志,我可以帮你写精确过滤命令

0