过滤日志内容的方法取决于日志格式、过滤目的、使用的工具。下面按常见场景给你一套实用指南,从简单到进阶。
grep "ERROR" app.log
grep -i "error" app.log
grep -v "INFO" app.log
grep -E "ERROR|WARN" app.log
grep -n "ERROR" app.log
grep "2025-01-20 10:" app.log
sed 按时间区间sed -n '/2025-01-20 10:00/,/2025-01-20 11:00/p' app.log
2025-01-20 10:00:01 INFO Starting app
2025-01-20 10:00:02 ERROR Failed to connect
grep " ERROR " app.log
grep -v " ERROR " app.log
如果日志是 JSON:
{"time":"2025-01-20T10:00:00","level":"ERROR","msg":"db fail"}
jqjq 'select(.level=="ERROR")' app.log
jq 'select(.level=="ERROR" and .msg | contains("db"))' app.log
tail -f app.log | grep "ERROR"
只显示错误日志,实时更新。
tail -n 100 app.log
head -n 50 app.log
| 工具 | 适用场景 |
|---|---|
awk |
按列、复杂条件 |
jq |
JSON 日志 |
| ELK (Elasticsearch + Logstash + Kibana) | 大规模日志 |
| Grafana + Loki | 云原生日志 |
| Splunk | 企业级 |
awk '$3=="ERROR"' app.log
| 需求 | 示例 |
|---|---|
| 只看错误 | grep ERROR app.log |
| 排除心跳日志 | grep -v "heartbeat" app.log |
| 某接口日志 | grep "/api/login" app.log |
| 某用户 | grep "user_id=123" app.log |
| 某 IP | grep "192.168.1.1" app.log |
你可以直接告诉我:
我可以给你精确命令或脚本。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。