1

我正在尝试在以下内容中执行以下操作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" );

我也尝试过${client}没有log4j2.xml 任何效果。如何log4j2.xml在布局元素外部引用 MDC 键?

我还在属性部分下为键指定了一个默认值,如下所示:

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

2 回答 2

0

而不是%X模式转换器(仅用于布局),您想使用查找

在这种情况下,有一个内置的查找功能可以满足您的需求:上下文映射查找

示例用法:

<File name="MyFile" fileName="logs/$${ctx:client}]">
于 2017-06-29T02:23:40.570 回答
0

您可以使用Routing RoutingAppender包装文件附加程序,并且Routing RoutingAppender可以使用MDC分隔文件。

在此处查找示例: 使用 log4j2 (MDC) 在不同的文件中写入不同的日志

参考: RoutingAppender

于 2018-03-15T09:02:07.277 回答