Доступ к значению ключа MDC внутри элемента File файла log4j2.xml

Я пытаюсь сделать что-то вроде следующего в 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, ничего не работает. как передать ключ MDC внутри log4j2.xml вне элемента макета?

Я также указал значение по умолчанию для ключа в разделе свойств следующим образом.

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

person Shiva    schedule 28.06.2017    source источник


Ответы (2)


Вместо преобразователя шаблонов %X (который предназначен только для макетов) вы хотите использовать поиск.

В этом случае есть встроенный поиск, который делает то, что вам нужно: Поиск контекстной карты.

Пример использования:

<File name="MyFile" fileName="logs/$${ctx:client}]">
person Remko Popma    schedule 29.06.2017
comment
$${ctx:client} не работает. Он создает файл как ${ctx - person Shiva; 29.06.2017
comment
Вы уверены, что в контексте потока есть значение для этого ключа для каждого потока, который ведет журнал? - person Remko Popma; 29.06.2017
comment
да, но я также попробовал значение по умолчанию, как указано в разделе вопросов - person Shiva; 29.06.2017
comment
Возможно, вы нашли ошибку. Не могли бы вы создать отчет об ошибке в системе отслеживания ошибок Log4j2 JIRA? - person Remko Popma; 30.06.2017
comment
Кстати, в вашем вопросе упоминается MDC.put(..., но класс API Log4j2 - ThreadContext. Вы пробовали вместо этого использовать ThreadContext.put("client", "Roger")? - person Remko Popma; 30.06.2017
comment
попробую это @Remko Popma - person Shiva; 30.06.2017

Вы можете использовать Routing RoutingAppender для переноса файлового приложения, а в Routing RoutingAppender можете использовать MDC для разделения файла.

Найдите пример здесь: напишите разные регистрирует в разных файлах с помощью log4j2 (MDC)

Ссылка: RoutingAppender

person bluearrow    schedule 15.03.2018