Log4j2的RoutingAppender的通配符模式

我正在尝试使用Log4j2的新RoutingAppender路由基于MDC(Log4j2中的ThreadContext)的不同日志。我想做的是以下几点:

  • 如果MDC映射具有$ contextId->追加到$ contextId附加器(特定日志)
  • 如果MDC没有$ contextId->追加到主附加程序(常规日志)

我想使用标记中的通配符模式来实现此目的,然后使用for contextId($

{ctx:contextId})中的键参数和主附加器使用默认值(不带键​​参数)进行过滤,但是我没有知道那个通配符是哪个值。

感谢您提供任何帮助,也许我是从错误的途径来解决这个问题。我一直在阅读有关过滤器的信息,但似乎无法按我的意愿工作。

谢谢!

回答:

感谢链接Remko,我找到了一个临时解决方案,直到Log4j2的人员对该功能进行了改进。该解决方案同时使用RoutingAppender和Filters。这是我的log4j2配置的样子(我定义了属性,但未在此处显示):

<appenders>

<appender name="applicationAppender" type="RollingFile" fileName="${logFileName}" filePattern="${logFileNamePattern}" bufferedIO="true" immediateFlush="true" append="true">

<layout type="PatternLayout" pattern="${logPattern}" />

<Policies>

<TimeBasedTriggeringPolicy />

<SizeBasedTriggeringPolicy size="${logFileSize}" />

</Policies>

<DefaultRolloverStrategy max="${logFileCount}" />

</appender>

<Routing name="contextSpecificAppender">

<Routes pattern="$${ctx:contextId}">

<Route>

<appender name="Rolling-${ctx:contextId}" type="RollingFile" fileName="logs/${ctx:contextId}.log" filePattern="${logFileNamePattern}" bufferedIO="true" immediateFlush="true" append="true">

<layout type="PatternLayout" pattern="${logPattern}" />

<Policies>

<TimeBasedTriggeringPolicy />

<SizeBasedTriggeringPolicy size="${logFileSize}" />

</Policies>

<DefaultRolloverStrategy max="${logFileCount}" />

</appender>

</Route>

</Routes>

</Routing>

</appenders>

<loggers>

<root level="info">

<appender-ref ref="contextSpecificAppender">

<ThreadContextMapFilter onMatch="DENY" onMismatch="ACCEPT">

<KeyValuePair key="contextId" value="" />

</ThreadContextMapFilter>

</appender-ref>

<appender-ref ref="applicationAppender">

<ThreadContextMapFilter onMatch="ACCEPT" onMismatch="DENY">

<KeyValuePair key="contextId" value="" />

</ThreadContextMapFilter>

</appender-ref>

</root>

</loggers>

我要做的是根据要记录的追加程序调用ThreadContext.put(“ contextId”,“”)或ThreadContext.put(“

contextId”,“ something”)。我希望可以迅速实现荒野功能,但与此同时,此解决方案对我来说已经足够。

谢谢!

以上是 Log4j2的RoutingAppender的通配符模式 的全部内容, 来源链接: utcz.com/qa/410295.html

回到顶部