最近要讀一些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的配置頁面

