一个正则表达式用于包中的所有类,另一个正则表达式用于具有Log4j2配置的同一个包中的一个类

0sgqnhkj  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(119)

具有log4j 2 xml配置的java应用程序中存在以下项目结构。

com.应用程序包.one

  • class1.java
  • class2.java
  • class3.java
  • class4.java
    com.应用程序包.两个
  • class5.java
  • class6.java
  • class7.java
  • class8.java

整个应用程序在以下情况下打印记录器所有三个条件都要匹配
condition 1-〉打印所有类的错误模式记录器
condition 2-〉如果日志记录语句的一部分有“异常”,则打印
condition 3-〉对于程序包2的类7,如果日志语句包含异常或某些文本,则需要显示排除
我添加了以下log4j 2xml配置,它满足条件1和条件2,但在相同的配置中无法实现条件3。
条件1和2的工作配置

<Logger name="com.app.package" level="error">
<RegexFilter regex=".*(?i)exception(?-i).*" onMatch="ACCEPT" onMismatch="DENY"/>
</Logger>

条件3不工作

<Logger name="com.app.package" level="error">
     <RegexFilter regex=".*(?i)exception(?-i).*" onMatch="ACCEPT" onMismatch="DENY"/>
</Logger>

<Logger name="com.app.package.two.class7" level="error">
     <RegexFilter regex=".*(?i)exception(?-i).* | .*(?i)sometext(?-i).*" onMatch="ACCEPT" onMismatch="DENY"/>
</Logger>

是否可以同时对同一个类进行包级过滤和类级过滤?
在此输入任何内容都将非常有用,
提前感谢...:-)

uelo1irk

uelo1irk1#

对于条件3
日志配置有两个问题
1)要添加的附加器信息
2)正则表达式前后空格的管道|符号化
在所有条件下工作的更改配置如下所示

<Logger name="com.app.package" level="error">
<RegexFilter regex=".*(?i)exception(?-i).*" onMatch="ACCEPT" onMismatch="DENY"/>
<AppenderRef ref="LogToConsole"/>  
</Logger>
<Logger name="com.app.package.two.class7" level="error">
 <RegexFilter regex=".*(?i)exception(?-i).*|.*(?i)sometext(?-i).*" onMatch="ACCEPT" onMismatch="DENY"/>
<AppenderRef ref="LogToConsole"/>
</Logger>

相关问题