1、查異常堆棧
顯示該行及其后面的50行內容,然后通過 less 命令進行分頁查看
grep -A 50 "NullPointerException" a.log | less
參數解釋:
- grep: 文本搜索命令
- -A 50: After 的意思,顯示匹配行后面的50行
- “NullPointerException”: 要搜索的文本模式(Java空指針異常)
- a.log: 目標日志文件
- |: 管道符,將前一個命令的輸出傳遞給后一個命令
- less: 分頁查看器,用于逐頁瀏覽長文本
A的參數還可以替換為以下參數:
- -B 50:Before的意思,顯示匹配行前面的50行
- -C 50:Context的意思,顯示匹配行前后的50行(對稱顯示)
2、實時監控新日志
實時監控日志文件,當出現 “NullPointerException” 時,顯示該異常及其后面的50行內容。
tail -f a.log | grep --line-buffered "NullPointerException"
參數解釋:
- tail -f: 實時跟蹤文件的新增內容
- a.log: 目標日志文件
- –line-buffered:僅顯示匹配的行
3、翻歷史/壓縮日志
快速定位多個日志文件中的空指針異常,并查看完整的錯誤堆棧信
grep -H -A 50 "NullPointerException" *.log
參數解釋:
- -H: 顯示文件名(即使只搜索一個文件)
- *.log: 匹配所有以 .log 結尾的文件
zgrep -H -A 50 "NullPointerException" *.gz
參數解釋:
- zgrep: 專門用于搜索壓縮文件的grep命令
- *.gz: 匹配所有以 .gz 結尾的壓縮文件
4、統計異常數量
統計每個 .log 文件中包含 “NullPointerEWxception” 的行數
grep -c "NullPointerEWxception" *.log
-c: count 的意思,統計匹配行的數量
5、多種異常一起查
使用正則表達式在日志文件中同時搜索兩種異常。
grep -E "NullPointerException|TimeoutException|IOException|SQLException" a.log
參數解釋:
- -E: 使用擴展正則表達式(Extended Regular Expressions),啟用擴展正則表達式,使得 | 被解釋為或操作符,而不是普通字符
- “NullPointerException|TimeoutException|IOException|SQLException”: 匹配包含 “NullPointerException” 或者 “TimeoutException” 或者”IOException“或者”SQLException“的行
6、反向過濾(排除無關)
查找空指針異常并過濾掉調試信息
grep "NullPointerException" a.log -A 20 | grep -v "debug"
參數解釋:
- grep -v:反向匹配,顯示不包含指定模式的行
7、按時間范圍篩選日志
查詢出2025-08-21 10點到11點之間出現的空指針異常
awk '/2025-08-21 10:/,/2025-08-21 12:/' a.log | grep "NullPointerException"
參數解釋:
- awk: 文本處理工具
- /2025-08-21 10:/,/2025-08-21 12:/:范圍模式(提取這兩個時間點之間的所有行)
- 起始模式:包含 “2025-08-21 10:” 的行
- 結束模式:包含 “2025-08-21 12:” 的行
8、關鍵字AND查詢
查找同時包含 “Exception” 和 “UserService” 的行
grep "Exception" a.log | grep "UserService"
9、定位最近一次異常
從日志文件的末尾開始搜索,找到最后一個 “NullPointerException” 并顯示它及其后面的50行內容
tac a.log | grep -m 1 "NullPointerException" -A 50
參數說明:
- tac: 反向顯示文件內容(cat的反向命令),從文件的最后一行開始,逐行向上顯示,相當于把文件內容完全顛倒順序
- |:管道,將反向排列的日志內容傳遞給 grep
- -m 1: 最多匹配1次,找到第一個匹配就停止
10、異常排行
用于統計日志中各種異常的出現次數并按頻率排序
grep "Exception" a.log | sort | uniq -c | sort -nr | head
參數說明:
- grep “Exception” a.log:從 a.log 中篩選出包含 “Exception” 的所有行
- sort:對異常行進行排序(按字母順序)
- uniq -c:合并相同的異常行并顯示計數
- sort -nr:按出現次數從高到低排序
- n: 按數字排序
- r: 反向排序(降序)
- head:顯示前10行(默認)