我正在尝试在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>
答案 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