✅ 一、「实时动态查看日志」(最常用,排查线上实时报错 / 业务流水)
✅ 1. tail ------ 日志动态跟踪首选,必学!
✅ 核心用法(90% 场景用这 2 个):
tail -f filename.log:实时滚动查看日志尾部 ,新增内容秒刷新,按Ctrl+C退出。tail -F filename.log:比-f更实用,日志文件被切割 / 重命名后,会自动跟踪新文件,线上必用!✅ 补充:tail -n 200 filename.log可直接查看日志最后 200 行,兼顾「查历史 + 盯实时」。
✅ 2. less ------ 动态查看 + 交互式翻阅,日志分析神器
✅ 核心用法(动态 + 翻阅一体,比 tail 功能更强):
less +F filename.log:等同于tail -F,实时跟踪日志尾部;- 优势:跟踪时按Ctrl+C 可暂停,用
↑/↓翻阅历史日志,按F恢复实时跟踪,完美适配「看实时 + 查上下文」场景。✅ 高频快捷键:/关键字搜索、n下一个匹配、N上一个匹配、q退出。
✅ 3. multitail ------ 多日志文件同时动态跟踪
可分屏实时查看多个日志文件 ,适合需要同时监控业务日志 + 错误日志的场景,需手动安装(yum install multitail)。示例:multitail app.log error.log
✅ 二、「日志文件静态查阅」(查历史日志、筛选 / 检索内容)
✅ 基础查阅(快速看文件内容)
cat:一次性读取整个日志文件 ,适合小日志,例:cat filename.log;✅ 常用组合:cat -n filename.log(显示行号)、cat filename.log | more(分页查看)。more:分页查看日志,只能向下翻页(空格翻页、Enter 换行、q 退出),适合大文件快速浏览。less:静态查阅天花板,支持上下翻页、关键字搜索、行号定位 ,大日志文件首选,示例:less filename.log。
✅ 关键字筛选检索(排查报错核心,必背组合)
所有命令均可搭配管道符|+ 过滤命令,精准提取日志,是工作核心用法!
-
grep------ 日志筛选第一利器,按关键字过滤✅ 高频用法:grep "ERROR" filename.log:筛选日志中含ERROR的行;grep -i "error" filename.log:忽略大小写筛选;grep -n "ERROR" filename.log:显示匹配行的行号;grep -C 5 "ERROR" filename.log:显示匹配行的上下 5 行上下文(查报错原因必备);grep -E "ERROR|WARN" filename.log:同时筛选ERROR和WARN两行内容。
-
head------ 查看日志开头内容 示例:head filename.log(默认前 10 行)、head -n 100 filename.log(前 100 行),适合看日志头部的配置 / 启动信息。
✅ 日志内容进阶处理(排序、去重、统计)
适用于日志分析、统计报错频次等场景,组合使用效率拉满:
sort:日志排序,例:cat log.log | sort(按字符排序)、cat log.log | sort -n(按数字排序);uniq:去重统计,例:cat log.log | grep "ERROR" | uniq -c(统计每种 ERROR 出现次数);wc:统计行数 / 字数,例:grep "ERROR" log.log | wc -l(统计 ERROR 出现的总行数)。
✅ 三、「日志切割 / 归档 / 查看压缩日志」(解决大日志、压缩日志痛点)
✅ 1. 查看压缩日志文件(线上日志常压缩为.gz 格式)
无需解压,直接查看,节省磁盘空间:
zcat filename.log.gz:一次性查看 gz 压缩日志;zless filename.log.gz:分页 + 搜索查看 gz 压缩日志(推荐);zgrep "ERROR" filename.log.gz:直接筛选 gz 日志中的关键字。
✅ 2. 大日志切割(避免单日志文件过大,无法打开)
split:按行数 / 大小切割日志,例:split -l 100000 filename.log log_part_(按 10 万行切割,生成 log_part_aa、log_part_ab);- 搭配使用:
split -l 100000 filename.log && grep "ERROR" log_part_*(切割后批量筛选)。
✅ 四、「工作高频组合拳」(直接复制即用,覆盖 99% 日志场景)
✅ 场景 1:实时监控日志 + 筛选报错
tail -F app.log | grep -i "error"
✅ 场景 2:查报错 + 看上下 10 行上下文
grep -C 10 "NullPointerException" app.log
✅ 场景 3:统计日志中所有报错的出现次数
grep "ERROR" app.log | sort | uniq -c | sort -nr
✅ 场景 4:分页查看大日志 + 搜索关键字
less app.log → 按/关键字搜索 → n翻下一个匹配项
✅ 场景 5:查看压缩日志中的报错
zgrep -C 5 "WARN" app.log.gz
✅ 补充:日志相关小技巧
- 日志内容过多时,可将筛选结果写入新文件:
grep "ERROR" app.log > error.log; - 按时间筛选日志(适用于带时间戳的日志):
grep "2025-12-25 10:00" app.log; - 线上日志默认路径:
/var/log/(系统日志)、项目日志一般在项目根目录/logs/。