最近要讀一些spring boot專案產生的log檔案,眾所周知,idea擁有強大的外掛系統。當我開啟log檔案時,idea自動幫我推薦了ideolog這個外掛。
但是當我安裝好之後發現系統並不能完全識別我的log格式。仔細檢視後發現,原來是各個系統輸出的log檔案各有不同,需要用正規表示式來匹配。
所以我就研究了一下正規表示式。併成功解析了spring boot專案輸出的log檔案。
這個網站可以檢查正規表示式是否能正確解析,還能進行debug,看看匹配卡在了哪一步
以下為程式碼
例:
2021-01-21 11:19:19.111 INFO 10808 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/9.0.12
正則:
^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3})\s*([A-Z]*)\s\d*\s\-{3}\s(\[.*\]).*\: .*$
解釋:
1. ^為檔案開頭
2. \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}為時間格式yyyy-MM-dd HH:mm:ss.SSS的正則寫法
3. \s*表示中間有多個不可見字元
4. ([A-Z]*)表示有多個A-Z字元
5. \s表示有一個不可見字元
6. \d*表示有多個數字
7. \s表示有一個不可見字元
8. \-{3}表示有3個橫槓槓
9. \s表示有一個不可見字元
10. (\[.*\])表示有一箇中括號包裹的多個任意字元
11. .* 表示有多個任意字元
12. \:表示有一個冒號
13. 空格表示一個空格
14. .*$表示有多個任意字元且到檔案末尾
這樣就能對log檔案的每一行進行正確識別。
以下為正確識別之後的log檔案截圖
以下為ideolog的配置頁面