大家好,新年快乐!
如果ThreadContextMap
中的“env”键的值为prod1
或qa1
,我希望过滤某些日志。我已经进行了如下设置:
<Console name="prodOutput" target="SYSTEM_OUT">
<PatternLayout pattern="..."/>
<Filters>
<ThreadContextMapFilter onMatch="DENY" onMismatch="NEUTRAL" operator="or">
<KeyValuePair key="ENV" value="qa1"/>
<KeyValuePair key="ENV" value="prod1"/>
</ThreadContextMapFilter>
</Filters>
</Console>
但是这段代码“硬编码”了prod1
和qa1
的值。为了使代码具有可扩展性,我希望过滤掉那些与"prod\d+"
或"qa\d+"
的正则表达式匹配的日志。
与这些正则表达式匹配的值包括"prod1"
、"qa2"
。
这是因为我们不希望这些特定日志出现在生产和qa环境中
在ThreadContextMap
中,我们要检查的键值对是ENV
-prod1
或ENV
-qa1
。
我试着在StackOverflow和log4j 2文档上搜索,但似乎没有任何提到如何做这样的事情。
有没有人对我如何处理这件事有什么想法?感谢任何投入:)我也对其他想法持开放态度!
1条答案
按热度按时间5f0d552i1#
我设法找到了一个变通的解决方案,在该解决方案中,我将regex应用于插入到
ThreadContextMap
中的值这样,我只需要检查
ThreadContextMapFilter
、prod
和qa
中的2个值这个解决方案是令人满意的,因为它的工作和满足我们的要求。对于那些好奇,它看起来像这样:
因此,在
log4j2.xml
中,ThreadContextMapFilter
看起来如下所示:感谢任何花时间阅读我的帖子的人&希望这能成为未来任何人的有用参考,干杯!