linux日志 多文件定位

应用场景

线上排查日志,通常通过grep关键信息来定位出现问题的日志。实际情况下为了防止日志文件过大我们会根据不同的策略对文件进行切割,比如日志大小,日志时间等等。这就造成了我们在定位问题的时候可能需要查找多个日志,神烦。下面我们就来解决这个问题。

搞起

  1. 通过关键词搜索多个文件,并返回对应的文件。
	find ./ -type f -name "*.log" |xargs grep "keyword"    这个关键字就填你要搜索的

返回如下

./01.log:[ 2020-11-01T11:20:09+08:00 ] OPTIONS admin/Login/qrCode
./01.log:  'admin' => 'Login',
./01.log:[ 2020-11-01T11:20:09+08:00 ] POST admin/Login/qrCode
./01.log:    1 => 'Login',
./02.log:[ sql ] [ SQL ] SELECT * FROM `******` WHERE  `***` = 'admin/Login/qrCode'  AND `status` = 1 LIMIT 1 [ RunTime:0.000881s ]
./02.log:[ 2020-11-01T11:20:09+08:00 ] OPTIONS  admin/Login/qrCodeLogin
./02.log:  'admin' => 'Login',
./02.log:[ 2020-11-01T11:20:10+08:00 ] POST admin/Login/qrCodeLogin
./02.log:    1 => 'Login',

通过这些基本就可以确定需要查找的内容在哪个文件了

  1. 第二步 我们来确定在文件的行数,这个就简单了。
cat -n 01.log |grep "Login"

返回

45123 	[ 2020-11-01T11:20:09+08:00 ]  POST admin/Login/qrCode

至此我们已经找到了对应日志所在的文件以及行数

  1. 最后我们通过head 和tail来截取我们需要的日志内容
cat -n 01.log |tail -n +45100  |head -n 100     //tail一般为了日志完整会选择行号减小一定值

猜你喜欢

转载自blog.csdn.net/weixin_38052017/article/details/109848378