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() 值很有用。
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() 值很有用。