在系統排錯過程中,常常需要在日志檔案裡大海撈針。面對數量巨大的繁雜資訊,如何快速準确地找到線索,就顯得格外重要了。
利用文法高亮度(Syntax),可以突出顯示重要的資訊,比如:
- 包含“Error”和“Fail”等關鍵詞的報錯資訊;
- 日期、網址、檔案名等對象;
- 數字、字元串、操作符等元素。
定義文法高亮度
首先,定義需要着重顯示的文本内容:
比對指定的關鍵字:
syn keyword logLevelError error fail failure
比對特定模式的字元串:
syn match logDate 'd{2}/d{2}/d{4}s*d{2}:d{2}:d{2}'
然後,定義如何顯示特定的文本内容:
将以上定義的文法高亮組,連結到配色方案定義過的文法高亮組:
hi def link logLevelError ErrorMsg
也可以直接定義文本的顯示色彩:
hi def logLevelError guifg=#ddddff guibg=#444444
配置文法高亮度
首先,将文法高亮檔案,放置在以下目錄:
- Linux:
$HOME/.vim/syntax
- Windows:
$HOME/vimfiles/syntax
然後,在vimrc配置檔案中增加以下指令,以偵測.log為字尾名的日志檔案并啟用文法高亮度:
au BufNewFile,BufRead *.log setfiletype log
文法高亮度效果
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SMjJmY1IDOhVmYmVjY3MmZmNTOxYDZyIWNiZ2YiVTOy8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
關于日志檢視的一點想法
- 對于動辄百兆的大型日志檔案,Vim并非理想的工具。通常情況下:首先,利用tail和grep等指令,将日志檔案截取為較小的片段;然後,再使用Vim進行細緻地分析。
- 過多的文法高亮度,不但會影響打開檔案的速度,而且還會增加閱讀的幹擾。應該克制地使用視覺元素,僅僅突出顯示最為關鍵的資訊。比如,您可以在文法高亮檔案中,注釋掉關于日期和網址等元素的定義,而僅僅保留對于報錯資訊的突出顯示。
- 對于日志分析,并沒有捷徑。雖然vim-logreview等插件,可以移除日志檔案中的正常統計輸出,而僅僅保留報錯資訊。但異常事件通常并非孤立的單點問題,而其前後的上下文資訊對于建立時間線和還原事件場景都有着極高的價值。對于大多數問題,并不能通過單一的報錯資訊,直接指向确定的解決方案。
- 由此看來,利用文法高亮度來突出顯示報錯資訊,然後小心厘清來龍去脈,算是現實可行的權宜之計吧?