我正在使用Log4j LogFilePatternReceiver
類讀取一些簡單的日誌文件,並想知道是否有任何方式告訴Log4j將格式修改器解釋爲可選。Log4j可選格式修飾符和LogFilePatternReceiver正則表達式匹配
例如,假定下面的模式:
%r [%t] %p %c %x - %m%n
匹配字符串
123 [main] INFO org.apache.log4j.whatever x=8 - Just a message.
但不是字符串
123 [main] INFO org.apache.log4j.whatever - Just a message.
(即,與上述相同,但不「x = 8」部分)。
有什麼辦法告訴Log4j匹配嗎?
在另一個相關的筆記,把一些額外的打印語句中的LogFilePatternReceiver
的源代碼,我得到
Pattern: {%r [%t] %p %c %x - %m%n}
Regex: {(.*?)[ ]+\[(.*?)\][ ]+(\S*\s*?)[ ]+(\S*\s*?)[ ]+(.*)[ ]+\-[ ]+(.*?)}
在括號只是表示每個表達式的開始/結束不屬於它,只是爲了確保沒有多餘的空格或其他字符。正則表達式由LogFilePatternReceiver
創建,其initialize()
方法結束。
試圖在regexpal.com正則表達式,得到了一個匹配只對部分不包括該信息,即匹配,根據regexpal,
123 [main] INFO org.apache.log4j.whatever x=8 -
(具有在端部的空間)。顯然,正則表達式需要用$符號來關閉消息才能包含。
我在模式定義中犯了什麼錯誤嗎?
是的,但我不控制該正則表達式,它由Log4j的LogFilePatternReceiver類生成。 :-) – PNS