gpt4 book ai didi

java - Log4j 1.2.15 表达式过滤器正则表达式

转载 作者:行者123 更新时间:2023-11-30 06:22:42 25 4
gpt4 key购买 nike

我将在开头说不幸的是我必须使用 Log4j 1.2.15,请不要建议我升级。不过,我可以访问 Extras 配套版本 1.1。

我正在尝试使用 ExpressionFilter匹配任何包含至少一个“-”符号后跟任意数量的数字 0-9 的消息。例如:-03928474--27646等等

编辑:完整字符串的示例: <ClassName---0182364759> xxx this is a debug message

我想匹配其中的一部分。

我使用以下表达式:MSG LIKE [-]{1,}[0-9]{1,}

根据我尝试过的每个正则表达式构建网站,这应该可以满足我的需求。请注意,我尝试过 \d{1,}而不是[0-9]{1,}但 Log4j 会从表达式中删除\d (我已打开调试)。

其他ExpressionFilter位于 Appender按预期工作,所以我认为这不是 Appender 结构的问题.

这是行不通的:

<filter class="org.apache.log4j.filter.ExpressionFilter">
<param name="Expression" value="(MSG LIKE [-]{1,}[0-9]{1,})" />
<param name="AcceptOnMatch" value="true" />
</filter>

在下一行的同一个附加程序中,确实有效:

<filter class="org.apache.log4j.filter.ExpressionFilter">
<param name="Expression" value="(LEVEL >= WARN)" />
<param name="AcceptOnMatch" value="true" />
</filter>

这必须在 xml 中指定。

我知道可能性不大,但是有人熟悉 Log4j 1.2 处理正则表达式的方式的特殊性,或者能够指出我哪里出了问题吗?

最佳答案

好吧,事实证明 Log4j 1.2 中的 LIKE 规则使用 matcher.matches() 来匹配整个字符串,而我只想部分匹配该字符串。

解决办法如下:

.*-+[0-9]+.*

这会匹配我想要的部分匹配之前和之后的任意数量的非换行符。

关于java - Log4j 1.2.15 表达式过滤器正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47803047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com