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

log4j2 Setting printObject to true in custom Appender

HERE 它说 -

"Appenders should specify printObject as "true" if the toString method renders the values of the attributes passed to the Appender."

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

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

所以一般来说,提供一个好的 toString() 方法并声明 printObject 为真是明智的。另一方面,如果您错过任何一个也不是灾难:这主要是为了调试。因此,如果 printObject 为真但您没有重写 toString(),那么在调试您的插件时您将看不到有用的值。

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

开头,您可以看到此信息

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