IDE日志分析方法pt。 2
介紹
在第一部分中,我解釋了日志分析的理論方法,我認為這對維持工程師是最合適的。 這位工程師不需要在日志出現時立即對其進行分析,而是專注于對復雜問題的深入分析。 在第二部分中,我將展示一個復雜的模板可以涵蓋許多搜索場景,并展示一個可行的原型。
搜索對象模板
搜索模板的主要要求是它必須是復雜的,在最佳情況下必須非常復雜。 手動搜索越少越好。 復雜的模板應完成大部分工作并快速完成。 由于我們這里沒有任何服務器,因此僅預期可處理2-3 GB日志速度的開發人員PC也很重要。
主要正則表達式
模板應聲明一些正則表達式,這些正則表達式將在日志中搜索(使用Matcher.find)。 如果首先聲明多個,則收集第一個的結果,然后收集第二個的結果,等等。從最一般的意義上講,搜索結果是String數組– List <String>。
驗收標準
并非所有結果都被搜索過程接受。 例如,工程師可以搜索除“ X”以外的所有連接類型。 然后,他或她可以創建一個接受標準并過濾掉它們。 通過指定正則表達式“除X外的任何類型”。 另一種可能性是在時間間隔內搜索。 工程師可以搜索10到12個小時之間的任何日志記錄(他或她必須輸入完整的日期)。
尋找不同的表達也是可能的。 在這種情況下,工程師會指定一個以上的正則表達式(一般情況下會指定多個)。 一個例子將更好地解釋這個概念。
不同的正則表達式:
connection type (q|w)主正則表達式找到的日志記錄:
connection type w found connection type q created connection type s destroyed connection type q found獨特搜索的結果:
connection type w found connection type q created參量
正則表達式的問題之一是,真正有用的正則表達式非常長且笨拙。 以下是日志中的樣本日期:
2018-08-06 10:32:12.234這是它的正則表達式:
\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d.\d\d\d解決方案非常簡單–使用替代。 我稱它們為正則表達式的參數。 有些參數可能像記錄時間一樣是靜態的,但有些可以由用戶定義。 在執行之前,立即將參數替換為實際值。
觀看次數
搜索的結果是日志記錄,即類似
2018-08-06 10:32:12.234 [Thread-1] DEBUG - Connection 1234 moved from state Q to state W \r?\n雖然找到模板中定義的內容非常好,但最好將信息分成有用的部分。 例如,此表以簡潔明了的方式表示該記錄中的所有有用信息:
| 連接 | 1234 | 問 -> w ^
要提取這些信息,我們可以使用“查看”方法。 這意味著聲明在日志記錄中搜索的較小的正則表達式,并返回一條有關日志記錄的信息。 就像該日志記錄的視圖一樣。 將所有內容顯示在表格中將使其更易于閱讀。 表也??可以按任何列排序。
排序與合并
使用模板進行此類搜索的最有效方法是使用線程池,并將每個線程分配給日志文件。 假設池中有3-4個線程,則搜索將加快3-4倍。 但是合并結果成為一個重要的問題。 這里可以有2個解決方案:
合并看起來是一種更高級的技術,它使我們可以保留記錄的原始順序。
工作流程
最后的想法
在本文中達到這一點的每個人都必須困擾的問題是:是否有人試圖實現所有這些? 答案是肯定的! 有一個基于Eclipse框架的工作應用程序,其中包括Spring XML配置和許多其他內容。 搜索對象模板的工作方式如本文所述。
這是Github鏈接:
https://github.com/xaltotungreat/regex-analyzer-0
為什么是0? 好吧,這本來應該是一個原型,但在某種程度上仍然是原型。 我稱這個應用程序為REAL
[R egular
?Xpressions的
分析儀 對于L OGS
假定用戶具有一些如何導出Eclipse RCP應用程序或如何從Eclipse IDE中啟動它的知識。 不幸的是,我沒有足夠的時間來編寫有關它的任何好的文檔。 默認情況下,它可以分析HBase日志,并且config文件夾中有很多示例。
翻譯自: https://www.javacodegeeks.com/2018/11/ide-approach-log-analysis-pt-2.html
總結
以上是生活随笔為你收集整理的IDE日志分析方法pt。 2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五的英语怎么写 如何英语表达五
- 下一篇: 学校的英文怎么读 学校的英文是什么