访问log4j2.xml的File元素中的MDC键值

时间:2017-06-28 20:04:59

标签: logging log4j slf4j multi-tenant mdc

我正在尝试在log4j.xml中执行以下操作

<File name="MyFile" fileName="logs/%X{client}]">
    <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
    </PatternLayout>
</File>

我已经从java代码

中设置了如下键
MDC.put( "client", "Roger" );

我在log4j2.xml中也试过了$ {client} 什么都行不通我如何在布局元素之外的log4j2.xml中引用MDC键?

我还在属性部分下指定了键的默认值,如下所示

<Properties>
    <Property name="client">default</Property>
  </Properties>

2 个答案:

答案 0 :(得分:0)

您需要使用lookup,而不是%X模式转换器(仅适用于布局)。

在这种情况下,有一个内置的查找可以执行您想要的操作:Context Map Lookup

使用示例:

<File name="MyFile" fileName="logs/$${ctx:client}]">

答案 1 :(得分:0)

您可以使用Routing RoutingAppender打包文件追加器,Routing RoutingAppender可以使用MDC来分隔文件。

在此查找示例: write different logs in different files with log4j2 (MDC)

参考: RoutingAppender