gpt4 book ai didi

java - 设置特定 Log4j2 记录器的属性

转载 作者:行者123 更新时间:2023-11-30 06:09:46 36 4
gpt4 key购买 nike

根据the Log4j 2 manual :

A LoggerConfig (including the root LoggerConfig) can be configured with properties that will be added to the properties copied from the ThreadContextMap. These properties can be referenced from Appenders, Filters, Layouts, etc just as if they were part of the ThreadContext Map.

但是,我找不到该怎么做。我尝试过以下方法:

<Configuration>
<Appenders>
<Console name="stdout">
<PatternLayout charset="UTF-8">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{concern}] [%-5p] %c: %m%n</Pattern>
</PatternLayout>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="stdout"/>
</Root>
<Logger name="com.example.log4j2.Foo">
<Properties>
<Property name="concern">foo</Property>
</Properties>
</Logger>
<Logger name="com.example.log4j2.Bar">
<Properties>
<Property name="concern">bar</Property>
</Properties>
</Logger>
</Loggers>
</Configuration>

通过此配置,ThreadContextMap 将不会有任何“concern”键,并且 StatusLogger 将输出:

ERROR Attempted to assign attribute Properties to list of type class org.apache.logging.log4j.core.lookup.Interpolator which is incompatible with class org.apache.logging.log4j.core.config.Property.

ERROR logger Logger has no parameter that matches element Properties

如何将属性附加到依赖于记录器的日志事件?

最佳答案

我通过搜索 log4j git 存储库找到了解决方案: <Property/>元素必须是 <Logger/> 的直接子元素元素。

请参阅log4j-loggerprops.xml来自测试资源的文件:

<Configuration status="OFF" strict="false" name="DSI">
<Properties>
<Property name="test2">test2default</Property>
<Property name="attribKey" value="attribValue" />
<Property name="duplicateKey" value="attribValue">nodeValue</Property>
<Property name="test5">${sys:test:-${sys:test2}}</Property>
</Properties>
<Appenders>
<List name="List">
<PatternLayout pattern="[%-5level] %c{1.} user=%X{user} phrasex=%X{phrasex} test=%X{test} test2=$${sys:test2} test3=$${sys:test3:-Unknown} test4=$${sys:test3:-${sys:test}} test5=${test5} attribKey=$${attribKey} duplicateKey=$${duplicateKey}%msg%n" />
</List>
</Appenders>

<Loggers>
<Logger name="org.apache.logging.log4j.core" level="debug" additivity="false">
<Property name="user">$${sys:user.name}</Property>
<Property name="phrasex">${sys:user.phrasex:-****}</Property>
<Property name="test">${sys:test}</Property>
<AppenderRef ref="List"/>
</Logger>
<Root level="debug">
<Property name="user">${sys:user.name}</Property>
<Property name="phrasex">${sys:user.phrasex:-****}</Property>
<Property name="test">${sys:test}</Property>
<AppenderRef ref="List" />
</Root>
</Loggers>
</Configuration>

关于java - 设置特定 Log4j2 记录器的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50528182/

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