我正在使用 Log4jLogFilePatternReceiver
类来读取一些简单的日志文件,并且想知道是否有任何方法可以告诉 Log4j 将格式修饰符解释为可选。
例如,假设以下模式:
%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中的正则表达式,我只得到不包括消息的部分的匹配,即匹配是,根据正则表达式,
123 [main] INFO org.apache.log4j.whatever x=8 -
(最后有一个空格)。显然,正则表达式需要用 $ 符号关闭才能包含消息。
我在模式定义中犯了任何错误吗?