【发布时间】:2011-07-13 10:11:23
【问题描述】:
我有一个直接使用 log4j 的大型网络项目,以及许多 3rd-party 库和日志库的组合。
- 我们的代码库 - 直接使用 log4j。
- Hibernate - 使用 slf4j 和 slf4j-log4j 绑定。
- Spring - 使用公共日志记录。因此,它使用 jcl-over-slf4j 桥 api、slf4j 本身和 slf4j-log4j 绑定。
- 其他众多库,使用公共日志记录或 log4j。
我正在考虑将我们自己的代码库迁移到 slf4j api,但我不确定好处是否足够强大并且值得付出努力。目前我知道以下好处:
- 更清洁的 api。
- 性能改进 - 即使用参数化日志记录方法的能力。
- 将来能够轻松切换到 logback(目前无法使用 logback)。
- 不需要额外的罐子,因为我已经有了。
还有其他好处吗?有什么我不知道的缺点吗?
【问题讨论】:
-
Spring 不使用 SLF4J,它使用 Apache Commons Logging
-
Java 日志记录及其 350,000 种不同的实现:多么棒的 PITA。祝你好运@Yoni。
-
就我个人而言,我认为像 String.format 这样的日志记录方法语义值得付出一些努力。 isDebugEnabled() 不再用于昂贵的日志调用:)
-
@skaffman,也许我也在使用 jcl-over-slf4j 桥接器。我不得不承认我记不太清了,而且我现在无法访问代码。