Linux查看日志命令
问题排查过程:
1. 评估问题现象是否是操作问题,还是服务bug,页面出异常信息是后端,没抛异常信息有可能是前端渲染问题,F12抓包看那个字段没有数据(有时候需要前端帮忙确定是哪一个字段),没有数据是后端。
2. 根据url定位代码。
3. 根据代码打印的日志,查找日志输出 (遵循 “从外到内,从头到尾”,比如又try-catch 先看catch是否异常,没有异常再从头到尾一步一步地排查内部日志)。
首先cd 进入服务容器里文件所在目录
1. cat 命令 适合查看简短的文件,如配置文件 application.properties,当然也可以看日志
#看配置文件
cat application.properties
#看运行日志文件
cat xxx.out
#配合检索命令
cat application.properties | grep xxx
2. tail -f 命令,实时监控,一般用于触发异常接口,查看报错信息(好用)
#最后100行
tail -f xxx.out
或者
tail -f -n 100 xxx.out
或者
tail -f -n 100 xxx.out | grep 关键字
退出
Ctrl + c
3. vi + / (推荐)
vi xxxx.out
#跳转最后一行
shift + g 或者大写G
#跳转指定某行,如第一行
:1
#进入关键字的搜索模式
/ERROR 或者/Exception 或者/TraceID 或者/其它
#遍历所有检索出来的关键字
n
#退出
:q
4. grep (推荐,推荐)
#只显示关键字所在行
grep "关键字" xxx.log
#显示关键所行的上下20行
grep -C20 "关键字" xxx.log
#匹配多个关键字并显示行号
grep -E -n "word1|word2|word3" xxx.log
#检索某个目录下所有 ".log" 文件 (使用场景:检索归档的日志)
grep -C15 -n "关键字" /a/b/c/*.log
-c:显示匹配次数
-i:忽略大小写
-n:显示行号
-C:环绕行数
-v:显示没有匹配关键字行
5. less + / (强烈推荐)
less xxxx.out
#进入关键字的搜索模式
/ERROR 或者/Exception /其它
#跳转指定某行,如第一行
:1
向下滚动一行: 按 ↓ 或 Enter
向上滚动一行: 按 ↑ 或 k。
向下滚动一页: 按 f 或空格键
向上滚动一页: 按 b
滚动到文件末尾: 按 G(大写的 G)
滚动到文件开头: 按 g(小写的 g)
#遍历所有检索出来的关键字
n
#退出
:q
#显示行号
less -N xxxx.out
# less与vi的区别是 vi要加载整个日志,less是分页的性能会比vi高,但服务亲的日志一般会按设置归档,一般不会太大的,使用vi也是可以的,就是退出时候不要保存修改就好。
补充:less + grep 高级用法
#先根据MDC的链路id (traceId 一般是uuid,也有其它id工具生成的唯一id) 调出只关于某次请求所有日志,然后再根据检索代码的关键字
#下图例子没有traceId,我使用"c.n.c" 表示 traceId
less -N test.txt | grep "traceId" | grep "关键字"