Можно ли отформатировать MDC/контекстную карту как JSON с помощью PatternLayout в Log4j2?

Я использую log4j2 с PatternLayout, и этот шаблон: %d %-5p %t %c{1.} - %m %X%n%ex. Этот %X добавляет карту контекста (также известную как контекст диагностики мультимедиа) в конец строки журнала перед любыми исключениями.

В моем агрегаторе журналов я пытаюсь разобрать эти сообщения обратно в структурированные данные — это легко для даты, уровня, времени и т. д., но сложнее собрать карту из Map.toString реализации Java по умолчанию — поскольку она {key1=value 1, key2=value 2} без при экранировании становится трудно анализировать, когда значение содержит неэкранированные символы = или ,. JSON, с другой стороны, было бы тривиально разобрать обратно на карту.

Я не могу найти места, где можно подключиться к MDC-печати PatternLayout, но Log4j2 — очень расширяемая библиотека, и я надеюсь, что есть что-то, что я упустил из виду.


person Andrew Rueckert    schedule 13.08.2018    source источник
comment
Возможно, вы имеете в виду это: logging.apache.org/ log4j/2.x/manual/layouts.html#JSONLayout ?   -  person Roy Shahaf    schedule 14.08.2018
comment
Я думаю, что мой ответ на другой вопрос может вам помочь   -  person D.B.    schedule 17.08.2018