日志查看技巧之篩選[linux命令集]

ycbu8416 8年前發布 | 10K 次閱讀 Linux命令 Linux

來自: http://www.cnblogs.com/yougewe/p/5173635.html

引語:相信大家都會偶爾遇到要排查問題發生的原因的情況,那這種時候,我們最有力后盾就是日志文件了,所以謹記日志記錄真的很重要。但是日志文件往往是很大的文件,而且里面有太多的東西可能不是我們需要的,如無數重復行。如果能夠有效篩選出對我們有意義的記錄,那就太方便了!下面,就記錄一些我篩選日志的一些技巧,供自己和部分需要的新手朋友參考!(高能勿噴,歡迎留下你的高見)主要使用awk命令進行篩選!

原始日志php_error.log如下:

[21-Nov-2015 11:10:14 UTC] PHP Warning: 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       #指定錯誤級別輸出到

篩選含有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如下:

[2015-12-20 20:45:51] Error in Mysql::fetch
E:\wamp\www\includes\class\db.cls.php on line 149
E:\wamp\www\htdocs\pp\system\Model.cls.php on line 44
E:\wamp\www\htdocs\pp\controllers\admin\ScoreController.cls.php on line 56
E:\wamp\www\htdocs\pp\system\Application.cls.php on line 72
E:\wamp\www\htdocs\pp\system\Application.cls.php on line 49
E:\wamp\www\htdocs\pp\index.php on line 19

[2015-12-20 20:45:51] mysql_errno: 1054 mysql_error: Unknown column 'score_rule' in 'field list' E:\wamp\www\includes\class\db.cls.php on line 64 E:\wamp\www\htdocs\pp\system\Model.cls.php on line 43 E:\wamp\www\htdocs\pp\controllers\admin\SeController.cls.php on line 86 E:\wamp\www\htdocs\pp\system\Application.cls.php on line 72 E:\wamp\www\htdocs\pp\system\Application.cls.php on line 49 E:\wamp\www\htdocs\pp\index.php on line 19</pre>

去除相同行(時間除外),并帶時間行數打印出:

$ 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

對于字符一類的處理,awk,sed等命令是相當方便的,適當運用一下,對于工作還是挺方便的。但是這種東西用多了,往往在windows的工具下,也有這種操作的想法,但是絕對沒有這么方便,可以使用一些簡單的正則進行匹配一些字符,也還是提高查找速度的!

正則,好東西!

注意各個語言的具體描述,可能不同!

</div>

 本文由用戶 ycbu8416 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!