我在 java 日志库领域没有那么丰富的经验。 我开始使用 hibernate,然后发现我需要包含 apache commons 日志库和 sl4j 库。 实际的日志记录库是 log4j - 所以我也包含了该库。
在阅读了 apache commons 日志记录和 sl4j 库之后,我了解到它们都代表了使用另一个库(在我的例子中为 log4j)进行日志记录的抽象层。
为什么需要 2 个抽象级别?
最佳答案
在完美的世界中,这些多个日志记录 API 是不需要的,但不幸的是,没有明确的标准,所以有不同的库(而且 Hibernate 是一个大项目,有很多依赖项和子项目)使用不同的日志记录 API,作为用户,您必须提供所有这些 API。
准标准是 Log4J,直到 Sun 决定需要将自己的版本 (java.util.logging) 包含到 JDK 中。这使得它成为一场双马竞赛,而 Commons Logging 旨在为两者(以及任何其他人)提供统一的界面。不幸的是,Commons Logging had some short-comings ,所以目前最喜欢的是SLF4J。 SLF4J 也试图通过提供与所有其他 API 的桥梁来帮助清理困惑。
关于java - Hibernate 使用 apache commons 日志记录和 slf4j - 为什么需要 2 个日志记录抽象层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16881168/