gpt4 book ai didi

Java 包 Log4J2 : MapFilters

转载 作者:行者123 更新时间:2023-11-30 09:31:48 26 4
gpt4 key购买 nike

我有一个关于 MapFilters 的简单问题。好吧,我知道映射是什么:简单的键值对。现在 log4j 允许通过(来自网站的示例)过滤所谓的 map 消息:

  <MapFilter onMatch="ACCEPT" onMismatch="DENY" operator="or">
<KeyValuePair key="eventId" value="Login"/>
<KeyValuePair key="eventId" value="Logout"/>
</MapFilter>

但是我应该在代码中的什么地方定义这些消息呢?我试过:

    MapMessage mm = new MapMessage();
mm.put("eventId", "Login");
logger.exit(mm);

但这不是处理此问题的便捷方法,顺便说一句:它不起作用。

你知道关于这个主题的更详细的介绍吗? API 在这里并没有真正帮助我。

谢谢大家!

最佳答案

我在配置 MapFilter 时遇到了上述问题。ThreadContextMapFilter 以类似的方式工作,但在那种情况下,我们必须填充 ThreadContext 映射,一切正常。ThreadContextMapFilter 成功的原因是 ThreadContext 映射是基于上下文的,它对同一上下文中的所有日志事件都有效,但是 MapFilter它基于 MapMessage 工作,但它不是基于上下文 (MapMessage) 而是基于事件,因此对于每个日志记录事件,我们都必须将 MapMessage 作为参数传递给 MapFilter 工作。

相关配置及代码:

<configuration status="WARN" name="abcd">
<properties/>
<MapFilter onMatch="ACCEPT" onMismatch="DENY">
<KeyValuePair key="Mic" value="Mic123"/>
</MapFilter>
...........
........... <<Put other relevant configurations here>>
</configuration>

Java代码:

public static void main(String args[]) {
MapMessage mapMessage = new MapMessage();

mapMessage.put("Mic", "Mic123");
log4j2Tester.logger.debug(mapMessage,new Exception("Okies"));
log4j2Tester.logger.debug(mapMessage);
}

在上面的代码中,log4j2Tester 是我的独立类的对象,logger 是配置的记录器。

希望这篇文章能解决您的问题。快乐编码。

关于Java 包 Log4J2 : MapFilters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768549/

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