日志查询常用命令速查表
1. 实时监控日志
命令 | 说明 | 示例 |
---|
tail -f | 实时追踪日志末尾 | tail -f catalina.out |
tail -f + grep | 过滤实时关键词 | tail -f app.log | grep "ERROR" |
multitail | 多文件同时监控(需安装) | multitail -i app.log -i api.log |
2. 关键词搜索
命令 | 说明 | 示例 |
---|
grep | 基础关键词搜索 | grep "NullPointer" catalina.out |
grep -i | 忽略大小写 | grep -i "error" app.log |
grep -C | 显示上下文 | grep -C 10 "OOM" app.log (前后10行) |
grep -E | 正则匹配 | grep -E "ERROR|WARN" app.log |
zgrep | 搜索压缩日志 | zgrep "404" access.log.gz |
3. 时间范围过滤
命令 | 说明 | 示例 |
---|
sed | 按时间段截取日志 | sed -n '/2023-10-25 14:00:/,/2023-10-25 15:00:/p' app.log |
awk | 时间+关键词组合过滤 | awk '/14:00:/,/15:00:/ && /ERROR/' app.log |
journalctl | 系统日志时间过滤(Systemd) | journalctl --since "2023-10-25 14:00" --until "15:00" |
4. 日志统计与分析
命令 | 说明 | 示例 |
---|
wc -l | 统计行数 | grep "ERROR" app.log | wc -l |
awk | 按列统计 | awk '{count[$3]++} END {for(k in count) print k, count[k]}' app.log (统计日志级别) |
sort | uniq | 去重统计 | grep "Exception" app.log | sort | uniq -c |
5. 分页与查看
命令 | 说明 | 示例 |
---|
less | 分页浏览(支持搜索) | less app.log → 按 / 搜索,Shift+G 跳末尾 |
head / tail | 查看首尾部分 | tail -n 100 app.log (末尾100行) |
lnav | 高级日志查看器(时间着色、语法高亮) | lnav app.log (需安装) |
6. 多文件与压缩日志
命令 | 说明 | 示例 |
---|
grep -r | 递归搜索目录 | grep -r "Timeout" /var/log/ |
find + xargs | 多文件联合搜索 | find /var/log -name "*.log" | xargs grep "ERROR" |
zcat | 查看压缩文件内容 | zcat app.log.1.gz | grep "500" |
7. 高频组合命令
- 快速定位错误堆栈
grep -A 50 -B 20 "Caused by:" app.log
- 统计接口响应时间TOP10
awk '{print $7, $NF}' access.log \| sort -k2 -nr \| head -10
- 按小时统计错误数量
awk -F: '/ERROR/ {count[$2]++} END {for(h in count) print h":00", count[h]}' app.log
场景示例
问题
用户反馈14:30左右接口返回500错误,需快速定位。
排查步骤
- 按时间过滤访问日志
sed -n '/2023-10-25 14:20:/,/2023-10-25 14:40:/p' access.log > tmp.log
- 搜索500状态码
grep " 500 " tmp.log
- 关联应用日志
grep "2023-10-25 14:30" app.log \| grep -C 30 "NullPointer"
工具推荐
- 文本处理三剑客:
grep
(搜索)、sed
(替换/截取)、awk
(分析) - 高级工具:
lnav
:日志查看神器(支持SQL查询日志)jq
:JSON日志分析(如K8s环境)ELK
:大规模日志聚合分析