在伺服器介面測試中,我們經常會和各種日誌打交道。一旦測試時服務端出現了問題,而單憑服務端的日誌又不能發現問題原因的時候,往往開發要向我們測試人員詢問客戶端這邊的情況,希望看看我們能不能提供一些有用資訊,如錯誤返回內容,錯誤發生時間,哪些用例會出現問題等等。這時就需要我們來查詢測試時的日誌,從中篩選出有用的資訊。
篩查日誌這件事,根據情況不同,採用的方法也會有所不同。比如日誌很小,至多幾千行這樣的情況,我們完全可以使用一般的文字編輯器開啟,直接查詢所需內容即可。而像一些「大型」日誌,尤其是長時間穩定性測試所產生的日誌,動輒可能會有幾個g,幾十g,再用編輯器開啟顯然不夠現實。這時,我們可以採用其他的一些查詢方法,在不開啟日誌檔案的情況下,較為快速地進行篩選。下面我就來說說幾個經常會使用到的命令(方法)。
一、more/less 命令
基本命令格式:
more/less example.log
優點:缺點:搜尋速度較慢,檔案特別大的話要等很久才能搜尋到。
應用舉例:
檢視日誌檔案從某時刻開始的內容
首先使用more命令開啟乙個日誌檔案
more 2019-08-05_1.csv
顯示結果如下:
可以看到日誌的內容很多,此時我們關注日誌中的時間,比如我想檢視從04:01:00 gmt開始的日誌,那麼就鍵盤輸入:
/04:01
按下回車,就會自動切換至我們想要的位置:
可以看到,日誌內容從04:01開始了。
二、grep 命令
基本命令格式:
grep keyword example.log
優點:缺點:拓展應用:
grep -a|b|c n keyword example.log
應用舉例:檢視日誌檔案某時刻起向後10行的內容使用如下命令:
grep -a 10 '04:01:41' 2019-08-05_1.csv
結果顯示:
可以看到,從日誌中成功篩選出了04:01:41 gmt時刻後面10行的日誌內容,比more/less命令搜尋速度快了不少,而且內容更加簡潔,只包含這部分的內容資訊。
三、head/tail 命令
head和tail命令是功能近似而作用位置相反的兩個命令,head命令用來從開頭讀取文字,tail命令則是從尾部讀取文字。當我們不關注日誌中間的一大坨內容,只關注開頭或結尾的部分內容時,head和tail命令可以說是最好的解決方案。
基本命令格式:
head/tail -n example.log
使用方法:設定需要從檔案開頭/結尾查詢的行數(n),即可顯示對應結果。
優點:
方便實用,尤其是tail,可以從尾部讀取檔案。
缺點:
拓展應用:
1、head/tail與grep命令結合使用
head/tail -n example.log | grep keyword
grep keyword example.log | head/tail -n
2、tail -f 命令
在測試過程中,我們有時可能需要監測一下當前日誌的輸出情況,而由於日誌在測試程式啟動時已經定向到了某個檔案,沒有給到標準輸出,這時我們可以使用tail -f這個十分簡便的命令,獲取和日誌「上屏」相似的效果,隨著日誌檔案的不斷更新,該命令也會將更新的內容給到標準輸出,同時不影響日誌檔案的記錄:
tail -f example.log
此外,該命令結合grep使用,更可以獲得實時篩選日誌資訊的功能,將簡化版、篩取版的日誌記錄或輸出。
應用舉例:
檢視日誌檔案前1000行中,測試的時間記錄
使用如下命令:
head -1000 2019-08-05_1.csv | grep date
結果顯示:
可以看到,這樣準確從日誌中篩選出了時間記錄。
如此,我們還可以進一步拓展命令,利用wc -l來統計時間記錄的個數,完整命令如下:
head -1000 2019-08-05_1.csv | grep date | wc -l
結果顯示:
可以看到,一共有31個時間記錄。
結束語好了,以上就是本期介紹的幾個在日誌篩選方面的實用命令,掌握了這些命令,從此可以不再懼怕那些個大檔案了。
python 如何對logging日誌封裝
作者 做夢的人 小姐姐 出處 因為最近在做平台,發現有同事,使用django封裝了日誌模組,看樣子很簡單,準備自己單獨做了乙個日誌封裝模板,對於python不熟練的我,封裝部分參考了多個博主的內容,形成自己的日誌模組,內容如下 封裝部分 建立乙個logutil2的py檔案 usr bin env p...
linux下 大日誌檔案檢視與搜尋 less
場景 有乙個幾十m的大日誌檔案,裡邊的記錄是按時間排序的。現在需要找到其中,不知道在什麼位置的一條錯誤訊息。這時候,想把內容拷出來都費勁,就算拷出來了,一般的編輯器也難以hold住這麼大的檔案。這時候,用less,就能很簡單方便的解決這個問題。使用首先是開啟檔案 less filename.log ...
如何對Nginx日誌檔案進行切割儲存
日積月累下,日誌檔案會越來越大,日誌檔案太大嚴重影響伺服器效率,須要定時對日誌檔案進行切割。切割的方式有按月切割 按天切割 按小時切割,一般都是按天切割。那麼如何進行切割呢?思路 建立日誌檔案存放路徑 將日誌檔案以當天時間為名字進行重新命名 傳送kill usr1訊號給nginx的主程序號,讓ngi...