Java log4j2中的空Threadcontext大括号场景处理

Java log4j2中的空Threadcontext大括号场景处理,java,stack,log4j2,threadcontext,Java,Stack,Log4j2,Threadcontext,我正在尝试迁移到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> [01/10/17 12:17:37:116 IST]主要示例2警告(Example2.

我正在尝试迁移到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>
[01/10/17 12:17:37:116 IST]主要示例2警告(Example2.java:52)10是数字[]

那么如何处理这个空堆栈场景呢?

您可以使用的
notEmpty{pattern}
模式转换器:

当且仅当模式中的所有变量均不为空时,才会输出模式评估结果

例如:

%notEmpty{[%x]}
别名:variablesnofenty{pattern}, VARSNOTENTY{pattern},
notEmpty{pattern}

我希望记录器不带大括号,如下所示<代码>[01/10/17 12:17:37:116 IST]主要示例2警告(Example2.java:52)10是数字这将不起作用。它将
%notEmpty{[%x]}
作为%n并将记录器带到下一行。您使用的是什么版本?这个功能是最近才出现的。您是否尝试过
varsnotery
?版本2.7?或者更老的版本?现在输出记录器是
[01/11/17 12:22:59:693 IST]主要示例2调试(Example2.java:56)10是数字otEmpty
无法迁移到v2.7,因为无法超越java 6。因此,我使用log4jv2.3
%notEmpty{[%x]}