- 1、前言
- 2、tail 命令
- 2.1、动态监听日志
- 2.2、日志动态截取
- 3、日志定位截取
- 3.1、关键字收索定位
- 3.2、日志区间截取
Linux相对于Windows有更高的网络安全性,最主要是其在网络环境下强大的稳定性,所以应用服务多部署于Linux内核系统的服务器上。导致Linux上日志的查询处理更是家常便饭!
2、tail 命令 2.1、动态监听日志tail -f 日志文件名,动态打印日志文件最后10行,会进行动态监听,在服务器上多用于使用监听幂等操作的日志;
举例:如果一个查询操作报错,那么就可以首先在对应服务日志文件处使用此命令监听,然后再操作报错的查询,那么就能动态监听其打印的日志,由于查询操作并不会改变数据,所以在生产环境即使被操作多次也无妨!
# 进入日志目录 $ cd /data/logs/UserData/run/ # 动态查看日志最后10条 $ tail -f run_UserData_172.17.0.1_10007.log # 从日志尾部往上截取20条 $ tail -20 run_UserData_172.17.0.1_10007.log2.2、日志动态截取
tail -f 日志文件名 > 自定义文件,使用此命令会可将监听到的日志动态的写入到自定义的文件中,使用Ctrl + c 结束写入。
举例:遇到同上2.1的问题,规范的管理流程,生产环境是由运维人员进行管理的,开发人员是无权访问的。如果生产环境出现问题,那么报错日志就需要运维人员截取给开发人员!
# 将日志动态写入自定义文件 user.log # 如果没有user.log则会自动创建,如果存在内容则会被覆盖 $ tail -f run_UserData_172.17.0.1_10007.log > user.log # 追加写入:会从user.log的内容尾部开始写入,不会覆盖掉原有内容 $ tail -f run_UserData_172.17.0.1_10007.log >> user.log3、日志定位截取 3.1、关键字收索定位
通过管道命里组合查询:cat 日志文件 | grep -n 搜索内容
$ cat UserData_172.17.0.1_10007.log | grep -n 学校组织机构同步开始 19645:2022-07-21 03:30:01.140 1 scheduling-1 INFO c.a.s.d.p.t.SchoolDataSyncTask:104 - 学校组织机构同步开始=====
推荐使用:使用grep可以满足通用情况所有日志快速定位查询!
定位查询并显示行号:grep -n '关键词' 文件名
$ grep -n '学校组织机构同步开始' run_UserData_172.17.0.1_10007.log 19645:2022-07-21 03:30:01.140 1 scheduling-1 INFO c.a.s.d.p.t.SchoolDataSyncTask:104 - 学校组织机构同步开始===== # 截取时间关键字,并显示行号 $ grep -n '2022-07-21 03:30:01' run_UserData_172.17.0.1_10007.log 19645:2022-07-21 03:30:01.140 1 scheduling-1 INFO c.a.s.d.p.t.SchoolDataSyncTask:104 - 学校组织机构同步开始===== 19646:2022-07-21 03:30:01.281 1 scheduling-1 INFO c.a.s.d.p.u.BoShiLeServiceUtil:53 -
关键字前后查指定行数:grep -B|A|C 行数 '关键词' 文件名
# 关键字前查两行 $ grep -B 2 '学校组织机构同步开始' run_UserData_172.17.0.1_10007.log # 关键字后查两行 $ grep -A 2 '学校组织机构同步开始' run_UserData_172.17.0.1_10007.log
推荐使用:查询关键前后几行,一般用于报错日志的查询,对异常关键字进行检索,报错信息的处理通常是前后日志一起排查!
# 关键字查看前后2行日志 $ grep -C 2 '学校组织机构同步开始' run_UserData_172.17.0.1_10007.log # 如果内容太长,写入自定义文件后查看 $ grep -C 2 '学校组织机构同步开始' run_UserData_172.17.0.1_10007.log > user.log3.2、日志区间截取
之前已经讲到了关键字查询显示行号,在代码层关键位置会有日志标记,将其关键字检索出行号,进行行号区间日志截取、时间区间日志截取!
# 截取19646~19846区间的200行数据 $ sed -n '19646, 19846p' run_UserData_172.17.0.1_10007.log # 写入自定义文件查看 $ sed -n '19646, 19846p' run_UserData_172.17.0.1_10007.log > user.log # 截取自定义时间段 $ sed -n '/2022-07-21 03:30:01/, /2022-07-21 03:32/p' run_UserData_172.17.0.1_10007.log > user.log



