2017-01-10 93 views
2

我正在尝试迁移到log4j2。 在RollingFile追加程序我加入如下:Log4j2中的空Threadcontext大括号方案

<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是打印堆栈元素,结束每个记录语句。

现在,如果我的堆栈最初是空的,它会给我如下的空括号。

[01/10/17 12:17:37:116 IST] main    Example2       WARN (Example2.java:52) 10 is the number  [] 

[17年1月10日12:17:37:116 IST]主例2 WARN(Example2.java:52)图10是数[]

那么,如何处理这种空栈场景?

+0

我想不如下括号中的记录器。 '[01/10/17 12:17:37:116 IST] main示例2 WARN(Example2.java:52)10是数字' – user3207875

回答

1

您可以使用PatternLayoutnotEmpty{pattern}模式转换:

该输出评估模式的结果,当且仅当在模式的所有变量不是空的。

例如:

%notEmpty{[%x]} 

别名:variablesNotEmpty {图案}, varsNotEmpty {图案}, notEmpty {图案}

+0

这不起作用。它将'%notEmpty {[%x]}'作为**%n **并将记录器带到下一行。 – user3207875

+0

你使用的是什么版本?这个功能相当新近。你尝试过'varsNotEmpty'吗? –

+0

是的,我也试过。我正在使用log4j2。 – user3207875