1. 程式人生 > >如何在Linux下優雅的查詢日誌

如何在Linux下優雅的查詢日誌

lin 鍵盤 htm 線上 comm 發現 In 操作日誌 示例

做為一名合格的Java後臺開發
經常需要查詢線上的日誌,定位線上問題
所以熟練掌握日誌查詢的命令
可以使你更加迅速的定位錯誤日誌位置,及時解決問題
在此,我將介紹幾個自己工作中經常使用到的日誌查詢命令
大家一起學習討論,讓我們都能更優雅的操作日誌

假設你有一個日誌文件demo.log,裏面的內容如下所示,
我們將使用這個文件,來演示如何優雅的查詢日誌文件、定位文件內容。

line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
line5 654321 aa
line6 654321 bb
line7 12
line8 34
line9 56
line0 78
  • tail 命令

用於輸出文件中的尾部內容,實際應用如下:

// 顯示文件倒數2行數據,並實時刷新新日誌
tail -2f demo.log   

// 執行效果如下:
line9 56
line0 78

// 如果你需要停止,按Ctrl+C退出
// 假如查看的日誌,實時刷新的日誌量非常多的話,慎用!
  • cat 命令

命令用於連接文件並打印到標準輸出設備上

// 顯示文件全部內容
cat demo.log 

// 執行結果:
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
line5 654321 aa
line6 654321 bb
line7 12
line8 34
line9 56
line0 78

// 由於會顯示整個文件的內容,所以如果文件大的話,慎用!
  • more 命令

類似cat,不過會以一頁一頁的形式顯示,按空白鍵space就往下一頁顯示,按b鍵就會往回一頁顯示

more demo.log

// 執行結果(文件內容少的話,會直接顯示全部,效果跟cat一樣):
line1 123456 aa
line2 123456 bb
line3 123456 cc
--More--(15%)
  • less 命令

lessmore類似,但使用less可以隨意瀏覽文件(使用鍵盤上的上下箭頭),而且less在查看之前不會加載整個文件

less demo.log

// 執行結果(文件內容少的話,會直接顯示全部,效果如下):
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
line5 654321 aa
line6 654321 bb
line7 12
line8 34
line9 56
line0 78
demo.log (END)
  • grep 命令

grep指令用於查找內容包含指定的範本樣式的文件,如果發現某文件的內容符合所指定的範本樣式,grep指令會把含有範本樣式的那一列顯示出來

// 查詢包含關鍵字`123456`的日誌內容
grep "123456" demo.log

// 執行結果
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
// 查詢包含關鍵字`123456`且包含`aa`的日誌內容
grep "123456" demo.log | grep "aa"

// 執行結果
line1 123456 aa
// 查詢不包含`aa`的日誌內容
grep -v "aa" demo.log

// 執行結果
line2 123456 bb
line3 123456 cc
line4 123456 dd
line6 654321 bb
line7 12
line8 34
line9 56
line0 78
// 查詢包含關鍵字`123456`但不包含`aa`的日誌內容
grep "123456" demo.log | grep -v "aa"

// 執行結果
line2 123456 bb
line3 123456 cc
line4 123456 dd
// 查詢包含關鍵字`123456`或`aa`的日誌內容
grep "123456\|aa" demo.log
或者
grep -E "123456|aa" demo.log

// 執行結果
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
line5 654321 aa
  • 總結

當你通過grep查找關鍵字,但是還是有非常多匹配的結果時,可以組合前面的lessmore實現分頁顯示,示例如下:

grep "123456" demo.log | less
grep "123456" demo.log | more

grep "123456\|aa" demo.log | less
grep "123456" demo.log | grep -v "aa" | less

通過以上介紹的幾個命令,相信應該足夠應付大部分的查找日誌的場景。

好了,剩下的就是勤加練習了。

當然,如果你有更好的方式可以更加優雅的查詢日誌,也希望你能與我一起分享~

如何在Linux下優雅的查詢日誌