Обработка сценария пустых скобок Threadcontext в log4j2
Я пытаюсь перейти на log4j2. В RollingFile Appender я добавляю как показано ниже:
<PatternLayout>
<pattern>[%d{MM/dd/yy HH:mm:ss:SSS z}] %-18.18t %-35.35c{1} %-5p (%F:%L) %m \t %x %n</pattern>
</PatternLayout>
Мы знаем, что%x предназначен для печати элементов стека до конца каждого оператора logger.
Теперь, если мой стек пуст изначально, он дает мне пустые скобки, как показано ниже.
[01/10/17 12:17:37:116 IST] main Example2 WARN (Example2.java:52) 10 is the number []
[01/10/17 12: 17: 37: 116 IST] main Example2 WARN (Example2.java:52) 10 - это число []
Так как мне справиться с этим сценарием пустого стека?
2 ответа
Вы можете использовать PatternLayoutnotEmpty{pattern}
конвертер шаблонов:
Это выводит результат оценки шаблона тогда и только тогда, когда все переменные в шаблоне не пусты.
Например:
%notEmpty{[%x]}
Псевдонимы: variableNotEmpty{pattern}, varsNotEmpty{pattern}, notEmpty{pattern}
Вы можете использовать %equals{pattern}{test}{substitution} из https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout .
Например -
%equals{%x}{[]}{}
Это заменит [] пустой строкой. Работал для меня.