Обработка сценария пустых скобок 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}{[]}{}

Это заменит [] пустой строкой. Работал для меня.

Другие вопросы по тегам