log4j 2 - 是否可以对一条日志消息使用多个标记?
log4j 2 - is it possible to use multiple markers for one log message?
我想做类似的事情
logger.debug(new Marker[]{SQL_UPDATE,USER},"Updating user account");
然后我可以过滤每个 SQL_UPDATE and/or 每个关于 USER 数据库的日志。
是否有可能以某种方式实现它?
一个解决方案是使用特定的日志消息,例如我会使用一些特定的文本,如@SQL_UP,然后我会使用文本正则表达式过滤器,如:
<RegexFilter regex=".*@SQL_UP.*" onMatch="DENY" onMismatch="NEUTRAL"/>
但我认为它会更慢,我需要小心不要错误地将消息文本与标签混在一起...
据我所知,log4j2 只允许对每条日志消息应用一个标记。但是,可以通过调用 addParents 方法为标记指定父标记。
例如。使用定义的标记 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
我想做类似的事情
logger.debug(new Marker[]{SQL_UPDATE,USER},"Updating user account");
然后我可以过滤每个 SQL_UPDATE and/or 每个关于 USER 数据库的日志。
是否有可能以某种方式实现它?
一个解决方案是使用特定的日志消息,例如我会使用一些特定的文本,如@SQL_UP,然后我会使用文本正则表达式过滤器,如:
<RegexFilter regex=".*@SQL_UP.*" onMatch="DENY" onMismatch="NEUTRAL"/>
但我认为它会更慢,我需要小心不要错误地将消息文本与标签混在一起...
据我所知,log4j2 只允许对每条日志消息应用一个标记。但是,可以通过调用 addParents 方法为标记指定父标记。
例如。使用定义的标记 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