HERE它说 -
" Appenders应该将printObject指定为" true"如果是toString方法 呈现传递给Appender的属性的值。"
有人可以解释一下吗?这是否意味着如果printObject = true,我们应该重写toString()方法?如果我们不重写toString()会怎么样?
答案 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()值是很有用的。