当您LOG.debug("Exported {}.", product)
在 slf4j 中执行类似操作时,它最终会在参数上调用 toString(),例如product
.
由于某些原因,我无法在我想用作参数的所有类上覆盖 toString()。一些类来自第三方 jars,其他类也会在其他上下文中调用它们的 toString(),在这些上下文中我想在我的日志语句中打印的信息不可用。
但是,我有一个用于调试目的的类,它有一个方法,该方法DebugFormatter.format(Object)
具有很长的 instanceofs 级联,可以选择例程来查找有关该对象的一些有用的调试信息。
我的问题是:是否可以配置 slf4j 使其调用这样的静态方法而不是 toString()?
当然,我可以在将它作为参数传递给对象之前调用我的格式方法,Logger.debug()
但是即使没有启用相应的记录器,它也会被执行。所以我不得不用它来包围它,if (LOG.isDebugEnabled())
这意味着在 debug() 中有参数的全部意义都被忽略了。