当前位置: 首页 >数据库 > 日志查看技巧之筛选&去重[排查篇]

日志查看技巧之筛选&去重[排查篇]

  引语:相信大家都会偶尔遇到要排查问题发生的原因的情况,那这种时候,我们最有力后盾就是日志文件了,所以谨记日志记录真的很重要。但是日志文件往往是很大的文件,而且里面有太多的东西可能不是我们需要的,如无数重复行。如果能够有效筛选出对我们有意义的记录,那就太方便了!下面,就记录一些我筛选日志的一些技巧,供自己和部分需要的新手朋友参考!(高能勿喷,欢迎留下你的高见)
  主要使用awk命令进行筛选!

原始日志php_error.log如下:

[21-Nov-2015 11:10:14 UTC] PHP Waing: PHP Startup: in Unknown on line 0[21-Nov-2015 11:39:48 UTC] PHP Notice: Undefined index: HTTP_RAW_POST_DATA in E:\wamp\www\htdocs\wx_receiver.php on line 39

  重定向输出相关(这个很重要,因为所有打印出来的,你不可能看得完,导出到其他地方后慢慢分析才是硬道理):

$ echo "hello,world!" > out.log#直接输出到$ echo "hello,world!" >> out.log  #以添加的形式输出到  $ echo "ssss!" >> out.log 2>&1#指定错误级别输出到

  筛选含有waing的记录:

$ awk '/Waing/' php_error.log$ awk '{if($0 ~ /Waing/)print $0;}' php_error.log#完整写法

  筛选含Waing后面出现Startup的记录:

$ awk '/Waing.*?Startup/' php_error.log$ awk '{if($0 ~ /Waing.*?Startup/)print $0;}' php_error.log  #完整写法

原始日志mysql_error.log如下:

[2015-12-20 20:45:51] Error in Mysql::fetchE:\wamp\www\includes\class\db.cls.php on line 149E:\wamp\www\htdocs\pp\system\Model.cls.php on line 44E:\wamp\www\htdocs\pp\controllers\admin\ScoreController.cls.php on line 56E:\wamp\www\htdocs\pp\system\Application.cls.php on line 72E:\wamp\www\htdocs\pp\system\Application.cls.php on line 49E:\wamp\www\htdocs\pp\index.php on line 19[2015-12-20 20:45:51] mysql_ero: 1054mysql_error: Unknown column 'score_rule' in 'field list'E:\wamp\www\includes\class\db.cls.php on line 64E:\wamp\www\htdocs\pp\system\Model.cls.php on line 43E:\wamp\www\htdocs\pp\controllers\admin\SeController.cls.php on line 86E:\wamp\www\htdocs\pp\system\Application.cls.php on line 72E:\wamp\www\htdocs\pp\system\Application.cls.php on line 49E:\wamp\www\htdocs\pp\index.php on line 19

  去除相同行(时间除外),并带时间行数打印出:

$ awk '{if($1 ~ /^\[[[:digit:]]{4}-/){t=$0;}else{if(!a[$0]++)print NR, " ===> ", t, " ", $0;}}' mysql_error.log

  其他类似情况,请详细理解正则表达式写法。

  直接查看原始mysql-bin-log日志(binlog是二进制文件,查看不了,需借助mysqlbinlog工具):

$ mysqlbinlog mysql-bin-log.000038 > out.log 2>&1

  统计某文件夹下的文件行数:

grep -r -c ./* "<?php" | wc -lgrep -r -l "<?php" ./thinkphp/* | xargs cat | wc -l#more perfectwc -l *find . -name "*.java" | wc -l find . -name "*.java" | wc -l | grep total

 

  对于字符一类的处理,awk,sed等命令是相当方便的,适当运用一下,对于工作还是挺方便的。但是这种东西用多了,往往在windows的工具下,也有这种操作的想法,但是绝对没有这么方便,可以使用一些简单的正则进行匹配一些字符,也还是提高查找速度的!

  正则:好东西!

  关键:找特征,写规则,极简化!

  注意:各个语言的具体描述,可能不同!

diff file1 file2#比较两个文件的差异cat file.txt | sort > file.txt  #让文件内容按字母排序

 

统计代码行数:

find . -name '*.java' | xargs cat | wc -l

 

作者:等你归去来
来源链接:https://www.cnblogs.com/yougewe/p/5173635.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/118280.html

分享给朋友:

“日志查看技巧之筛选&去重[排查篇]” 的相关文章

sql递归查询 2022年05月17日 21:40:33
Mybatis中的${}和#{}区别 2022年05月17日 21:41:44
mysql 查询表中前10条数据 2022年06月08日 04:35:17
mysql 查询操作日志 2022年06月10日 21:58:42
Mysql 查询区分大小写的两种方法 2022年06月11日 20:53:24
如何查看MySQL的版本? 2022年06月11日 22:08:01
mysql查询结果保留2位小数不够补0 2022年06月12日 20:39:53
关于mysql查询时间范围的问题 2022年06月12日 21:19:01
MySQL查询指定行的记录 2022年06月14日 06:02:58
mysql 查询出现次数最多的 2022年06月15日 19:02:47