1. 程式人生 > >shell指令碼下檢視日誌檔案

shell指令碼下檢視日誌檔案

最近工作中,發現頁面的顯示資料和預期不一致,在排查了資料表過後,發現錯誤原因不在資料表和程式碼邏輯中。因為資料表中的資料來自log檔案,所以猜測是log中的資訊有誤。

排查log檔案過程中,因為是隻讀,所以試了有vim,cat,tail,grep四個,最後主要用來檢視檔案內容用的是tail與grep。

先貼兩個相關的連結:

裡面講解了一些相關的資訊。

不過在使用的時候不可能簡簡單單的就能出來,比如我使用的命令:tail -f /opt/資料夾/檔名.log |grep 'GET /篩選條件',其中的‘篩選條件’,就是程式碼中,需要匯入資料表中的某個欄位 like '篩選條件'一致。這樣看到的是資料的實時條件的最後幾條,然後頁面走一次流程,便會在指令碼看到新增的資料。

grep 'GET /篩選條件' /opt/資料夾/資料夾/檔名,可以檢視某個檔案內容,不過不是實時的,一般的檔案這個命令基本可以支援,但是遇上某些記錄或需求,如:

    1、數量太多,只檢視某一天的,可以在後面加日期條件:       | grep '05/Dec/2017'

    2、每一條都會很大,所以需要摘出每一條日誌中的某個欄位來排查,類似於資料庫語句中的 select id,name fom XXX 中的單獨拿出id和name來檢查,可以在命令後面加個條件:              | grep -o 記錄中的某個欄位.......................................|less

    3、如果不看記錄內容,只是看數目,後面加:        | wc -l

** 注意:1、上面的第二條中的‘記錄中的某個欄位’,指的是記錄中,會有一個欄位的值跟你想要的欄位值一致,但是它的鍵名並不是你程式碼中的那樣,它有自己的命名,故需要你現自己看過記錄後,確定哪一個欄位是你需要的那個‘name’或者‘id’

              2、第二條中的‘.........................’,指的是顯示你所需要的那個鍵值後面的多少個字元,一個點代表一個字元位,這個根據自己的實際需求來寫