HERE https://logging.apache.org/log4j/2.x/manual/extending.html它说——
“如果 toString 方法,附加程序应将 printObject 指定为“true”
呈现传递给 Appender 的属性值。”
有人可以解释一下吗?这是否意味着如果 printObject=true,我们应该重写 toString() 方法?如果我们不重写 toString() 会怎样?
在 Log4j 2 初始化期间,配置中的所有插件都会被处理并存储在 Node 对象中。 Node.toString() 方法的实现使得如果原始插件的printObject
属性为 true,Node.toString() 将委托给插件的 toString() 方法。否则,它返回一个包含插件类和插件名称的字符串。
所以一般来说,提供一个好的 toString() 方法并声明是明智的printObject
是真实的。另一方面,如果您错过其中任何一个,也不是灾难:这主要用于调试。因此,如果printObject
是 true 但您不重写 toString(),所发生的只是在调试插件时您将看不到有用的值。
Log4j 2 将初始化过程的详细信息记录到 DEBUG/TRACE 级别的 StatusLogger 中。如果您的配置以以下内容开头,您可以看到此信息<Configuration status="trace">
.
自定义插件可以使用printObject
属性来影响配置期间记录到 StatusLogger 日志记录的内容。可以肯定的是,初始化后,在调试结果节点值时显示插件的 toString() 值非常有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)