log4j2在自定义Appender中将printObject设置为true

时间:2017-01-19 15:52:49

标签: logging log4j2 appender

HERE它说 -

  

" Appenders应该将printObject指定为" true"如果是toString方法   呈现传递给Appender的属性的值。"

有人可以解释一下吗?这是否意味着如果printObject = true,我们应该重写toString()方法?如果我们不重写toString()会怎么样?

1 个答案:

答案 0 :(得分:1)

在Log4j 2初始化期间,配置中的所有插件都会被处理并存储在Node对象中。实现Node.toString()方法,使得如果原始插件的printObject属性为真,则Node.toString()将委托给插件的toString()方法。否则,它返回一个包含插件类和插件名称的String。

因此,一般来说,提供一个好的toString()方法并声明printObject为真是明智的。另一方面,如果你错过了它也不是灾难:这主要是为了调试。因此,如果printObject为真,但您没有覆盖toString(),那么所有发生的事情都是在调试插件时您不会看到有用的值。

Log4j 2将初始化过程的详细信息记录到DEBUG / TRACE级别的StatusLogger。如果您的配置以<Configuration status="trace">开头,则可以看到此信息。

自定义插件可能会使用printObject属性来影响配置期间记录到StatusLogger日志记录的内容。可以肯定的是,在初始化之后,在调试生成的Node值时显示插件的toString()值是很有用的。