【发布时间】:2011-08-26 14:33:07
【问题描述】:
是否可以对java.util.logging.Logger 进行典型调用并使用 SLF4J 将其路由到 Logback?这会很好,因为我不必逐行重构旧的 jul 代码。
EG,假设我们有这行:
private static Logger logger = Logger.getLogger(MahClass.class.getName());
//...
logger.info("blah blah blah");
最好将其配置为通过 SLF4J 调用。
【问题讨论】:
-
是的,有可能。而且非常简单,您无需更改任何源代码。您只需更改一些 .jar 库。看这篇文章-logging-with-slf4j-legacy logging-SLF4J logging
-
咬紧牙关重构为 slf4j 有一个主要好处。也就是说,您可以在字符串中使用 {} 来延迟 toString() 调用。
-
toString() 真的是现代 JVM 的一个问题吗?我意识到避免 toString() 调用更有效,但我的理解是对象创建很便宜,而且这将属于过早优化。
-
是的,如果您正在制作丰富的日志记录语句,这确实是一个问题。在 2015 年对现代 jvm 上的生产系统进行分析 不必要的调用来为生产中未实际启用的调试语句创建字符串是生产系统的 cpu 热点。