温馨提示×

怎样过滤linux日志内容

小樊
47
2026-09-20 18:32:23
栏目: 智能运维

在 Linux 中过滤日志内容是日常运维和排障的常用操作,下面按常见场景 + 常用命令给你一个实用总结。


一、最基础:用 grep 过滤关键字

grep "ERROR" /var/log/syslog

只看包含 ERROR 的日志。

忽略大小写

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

反向过滤(排除)

grep -v "DEBUG" /var/log/syslog

不包含 DEBUG 的日志。

显示行号

grep -n "timeout" /var/log/syslog

多关键字(或)

grep -E "ERROR|WARN" /var/log/syslog

多关键字(与)

grep "login" /var/log/syslog | grep "failed"

二、实时查看日志(tail + grep)

tail -f /var/log/syslog | grep "ERROR"

实时过滤错误日志(Ctrl+C 退出)。

只看最近 100 行:

tail -n 100 /var/log/syslog | grep "ERROR"

三、按时间过滤日志

1. 用 sed 按时间范围

sed -n '/2024-01-01 10:00/,/2024-01-01 11:00/p' /var/log/syslog

2. 用 awk 按小时过滤

awk '$1=="Jan" && $2>=10 && $2<=11' /var/log/syslog

四、结构化日志(JSON / 字段日志)

JSON 日志(推荐 jq)

cat app.log | jq 'select(.level=="ERROR")'

按列过滤(awk)

awk '$9==500' access.log

过滤 HTTP 状态码为 500 的请求。


五、systemd 日志(journalctl)

journalctl -u nginx.service

只看 nginx 服务日志。

实时 + 过滤

journalctl -u nginx.service -f | grep "error"

按时间

journalctl --since "2024-01-01 10:00:00" --until "2024-01-01 11:00:00"

按优先级

journalctl -p err

只看错误级别。


六、压缩日志过滤(无需解压)

zgrep "ERROR" /var/log/syslog.1.gz

七、常见组合示例

✅ 查看某 IP 的访问:

grep "192.168.1.100" access.log

✅ 统计错误出现次数:

grep "ERROR" app.log | wc -l

✅ 提取某一字段:

awk '{print $1, $4}' access.log

如果你有具体日志格式或想过滤的内容(比如 Nginx、Docker、Spring Boot 日志),可以直接发样例,我可以帮你写精确命令。

0 踩