PatternLayout экранирующий символ в двойных кавычках в log4j2

#java #log4j2

#java #log4j2

Вопрос:

Мне нужен журнал в log4j2, как показано ниже:

14:28:00.404 имя_приложения=»образец приложения splunk» имя_метода= main desc=»образец журнала»

 <PatternLayout pattern="%d app_name="%X{app_name}" method_name=%M(%L) %m %n"/>
 

Шаблон не работает из-за двойных кавычек. Что такое экранирующий символ для double quate, чтобы значение пары ключ-значение находилось в двойных кавычках в журнале.

 ThreadContext.put("app_name", "splunk sample app");
 

Ответ №1:

В вашем шаблоне просто замените два " на amp;quot; (объект XML для " символа):

 <PatternLayout pattern="%d app_name=amp;quot;%X{app_name}amp;quot; method_name=%M(%L) %m %n"/>
 

Затем он запишет то, что вы хотите:

 14:28:00.404 app_name="splunk sample app" method_name=main desc="sample log"
 

Комментарии:

1. Отлично. Не стесняйтесь отмечать этот ответ как полезный, если вы считаете, что это так (серая стрелка слева)

Ответ №2:

Теперь добавлена поддержка других специальных символов, таких как t для вкладок (https://issues.apache.org/jira/browse/LOG4J2-682 ).

Это не попало в Log4j-2.0-rc2, вам нужно будет выполнить сборку из trunk, чтобы использовать это, если вы хотите, чтобы оно было выпущено до версии 2.0.

Комментарии:

1. хорошо, ждем релиза 2.0, чтобы использовать его в prod. Получил некоторые ошибки при сборке из ствола.

2. Если у вас возникли проблемы с магистралью, вы должны сообщить об этом команде, чтобы это можно было исправить. 2.0 будет основан на магистрали… Вы создаете с помощью «mvn clean install»?

3. я попробую еще раз. Я просто взял ядро в одиночку, чтобы построить. да, чистая установка.