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

原始日志php_error.log如下:

[-Nov- :: UTC] PHP Warning: PHP Startup: in Unknown on line
[-Nov- :: UTC] PHP Notice: Undefined index: HTTP_RAW_POST_DATA in E:\wamp\www\htdocs\wx_receiver.php on line

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

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

  筛选含有warning的记录:

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

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

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

原始日志mysql_error.log如下:

[-- ::] Error in Mysql::fetch
E:\wamp\www\includes\class\db.cls.php on line
E:\wamp\www\htdocs\pp\system\Model.cls.php on line
E:\wamp\www\htdocs\pp\controllers\admin\ScoreController.cls.php on line
E:\wamp\www\htdocs\pp\system\Application.cls.php on line
E:\wamp\www\htdocs\pp\system\Application.cls.php on line
E:\wamp\www\htdocs\pp\index.php on line [-- ::] mysql_errno:
mysql_error: Unknown column 'score_rule' in 'field list'
E:\wamp\www\includes\class\db.cls.php on line
E:\wamp\www\htdocs\pp\system\Model.cls.php on line
E:\wamp\www\htdocs\pp\controllers\admin\SeController.cls.php on line
E:\wamp\www\htdocs\pp\system\Application.cls.php on line
E:\wamp\www\htdocs\pp\system\Application.cls.php on line
E:\wamp\www\htdocs\pp\index.php on line

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

$ 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. > out.log >&

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

grep -r -c ./* "<?php" | wc -l
grep -r -l "<?php" ./thinkphp/* | xargs cat | wc -l #more perfect wc -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

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

  1. 使用chrome控制台作为日志查看器

    很多时候,我们需要查看日志的实时输出,这个时候往往只能选择控制台.我这里的日志框架是serilog,它有一个好处是控制台输出时可以高亮的形式显示其参数结构信息,如下图所示 但也存在许多不方便的地方: ...

  2. linux查找有用日志常用技巧

    对于高级测试人员来说.需要有快速定位问题的能力,而查看有效的日志就是其中有效的方法之一,然而服务器上的日志多如牛毛,如何快速从中找出所需信息非常重要,以下是我在工作中用到的查找日志的简单命令,希望对大 ...

  3. Linux—日志查看(测试人员)

    备注:在筛选语句后面加“--col”可以高亮显示查询结果中的关键字 cd /home/admin/logs/服务器名 #进入日志目录(错误日志文件:common-error.log),路径因公司而定 ...

  4. windows日志查看-非法关机判断方法

    日志文件,它记录着Windows系统及其各种服务运行的每个细节,对增强Windows的稳定和安全性,起着非常重要的作用.但许多用户不注意对它保护,一些“不速之客”很轻易就将日志文件清空,给系统带来严重 ...

  5. SharePoint ULS Log Viewer 日志查看器

    SharePoint ULS Log Viewer 日志查看器 项目描写叙述 这是一个Windows应用程序,更加轻松方便查看SharePoint ULS日志文件.支持筛选和简单的视图. 信息 这是一 ...

  6. Pandas 数据筛选,去重结合group by

    Pandas 数据筛选,去重结合group by 需求 今小伙伴有一个Excel表, 是部门里的小伙9月份打卡记录, 关键字段如下: 姓名, 工号, 日期, 打卡方式, 时间, 详细位置, IP地址. ...

  7. 日志查看工具 logviewer pro的使用

    1.logViewer Pro 介绍 logViewer Pro 是一款log文件查看器,它可以在短短数秒内打开上G的LOG文件,支持高亮某行文字(例如警告,错误),支持Unicode名字,支持查看的 ...

  8. windows日志查看与清理

    日志查看 (1) 启动Windows实验台,点击:开始 - 控制面板 - 管理工具 - 事件查看器. (2) 应用程序日志.安全日志.系统日志.DNS日志默认位置:%sys temroot%\syst ...

  9. Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器

    一.介绍 TracerX logger是一个易于上手,且拥有众多高级特性的.NET日志框架. 它能够发送输出结果到多目的地(循环文件.事件日志等....).它也能生成文本和二进制文件.它拥有一个强大的 ...

随机推荐

  1. 【392】Python 列表解析

    参考: Python3 数据结构 | 菜鸟教程 列表推导式 列表推导式提供了从序列创建列表的简单途径.通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的 ...

  2. 443. String Compression

    原题: 443. String Compression 解题: 看到题目就想到用map计数,然后将计数的位数计算处理,这里的解法并不满足题目的额外O(1)的要求,并且只是返回了结果array的长度,并 ...

  3. TensorFlow Android Camera Demo 使用android studio编译安装和解决Execution failed for task ':buildNativeBazel'报错

    可以参考官网:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android#android-stud ...

  4. R语言-增加图例

    legend()函数 > plot(rain$Tokyo,type="l",col="red", + ylim=c(0,300), + main=&quo ...

  5. java简单的文件读写工具类

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...

  6. 通过DOS界面查看电脑上端口使用情况

    如何查看查看端口是否被占用? 打开电脑上的运行,输入cmd,进入DOS界面. 然后输入       netstat -an     即可显示电脑上所用的端口使用情况! 状态显示 LISTENING就表 ...

  7. Ubuntu 18.04学习笔记

    命令行快捷键 https://blog.csdn.net/wanlhr/article/details/80926804 Ubuntu18.04使用vi命令修改文件并保存 vi /opt/teamvi ...

  8. (转)android import library switch语句报错case expressions must be constant expressions

    今天当我从github上下载一个工程,并把它的库文件导入eclipse中,发现switch语句报错case expressions must be constant expressions : 解决方 ...

  9. 6L - 大菲波数

    Fibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3. 计算第n项Fibonacci数值.  Input 输入第一行为一个整数N,接下来N行 ...

  10. ping内网一台虚拟机延时很大(hyper-v虚拟机)的解决办法

    问题现象: ping 内网一台虚拟机延时很大,不稳定,造成业务系统响应慢.查看服务器上各种资源都正常. 解决办法: 在物理机上找到和hyper-v绑定的那个网卡,把“虚拟机队列”禁用掉就好了,如下图: ...