我使用的是Hibernate 6.1.2。我希望使用默认的JDK日志记录提供程序.According to a documentation for 5.4进行日志记录,可以这样做:
public class TestSL4JBug {
public static void main(String[] args) {
System.setProperty("org.jboss.logging.provider", "jdk");
jakarta.persistence.Persistence.createEntityManagerFactory("myPersistence");
}
}
我在较新的文档中寻找类似的解释,但没有找到。
唉,如果我测试上面的最小示例,我会得到:
...
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
MLog initialization issue: slf4j found no binding or threatened to use its (dangerously silent) NOPLogger. We consider the slf4j library not found.
...
对我来说,这看起来像是Hibernate试图加载SLF4J并失败了。当然,我已经找到了指南,说我应该添加SLF4J依赖项,但这不是我想要的。
所以我的问题是:如何将Hibernate 6.1.2配置为使用JDK日志记录?属性是否已更改,或者是否应该使用更好的方法来设置它?
1条答案
按热度按时间3yhwsihp1#
我意识到不是普通的Hibernate导致了这个错误。我也使用了hibernate-spatial,因此也使用了geolatte-geom。这个程序没有使用JBoss日志,而是总是通过SLF 4J。所以即使Hibernate通过JDK日志,SLF 4J仍然被加载。我现在不高兴地添加了slf 4j-jdk 14,错误就消失了。它仍然有更多的层和源代码源,我不满意。但可能比其他编程生态系统中的要少得多。