log4j2-是否可以为一条日志消息使用多个标记



我想做一些类似的事情

logger.debug(new Marker[]{SQL_UPDATE,USER},"Updating user account");

然后,我可以过滤每个SQL_UPDATE和/或关于USER数据库的每个日志。

有可能以某种方式实现它吗?

一种解决方案是使用特定的日志消息,例如,我会使用一些特定的文本,如@SQL_UP,然后我会使用文本正则表达式过滤器,如:

<RegexFilter regex=".*@SQL_UP.*" onMatch="DENY" onMismatch="NEUTRAL"/>

但我认为它会更慢,我需要小心,不要错误地将消息文本与标签混合在一起。。。

据我所知,log4j2只允许每个日志消息应用一个标记。但是,可以通过调用addParents方法为标记指定父标记。

Ex。使用定义的标记DEALERSHIP_A、DEALERSHIP_B和PORSCHE

以下过滤器将记录关于DEALERSHIP_A的PORSCHE 的所有消息

Java

Marker DEALERSHIP_A, DEALERSHIP_B, PORSCHE;//must use MarkerManager.getMarker

PORSCHE.addParents(DEALERSHIP_A);//adds parents

logger.log(PORSCHE,"The 911 has maintenance issues");

PORSCE.setParents(DEALERSHIP_B);//replaces parents

logger.log(PORSCHE,"A cayenne has just been sold");`

配置文件

<filters> <MarkerFilter marker="DEALERSHIP_A" onMatch="Neutral" onMismatch="Deny"/> <MarkerFilter marker="PORSCHE" onMatch="Accept" onMismatch="Deny" </filters>

带过滤器的控制台输出

The 911 has maintenance issues

最新更新