java - 如何配置 Hibernate 以使用标准日志记录

标签 java hibernate java.util.logging

如何配置 Hibernate 以使用标准日志记录?

我读到的文章说将日志框架放在类路径上,但我想只使用 java 附带的标准,这样编程就没有意义。

我正在尝试记录 SQL,因此在我的代码中(在使用 Hibernate 之前)我有

Logger hibernateLogger = Logger.getLogger("org.hibernate.SQL");
hibernateLogger.setLevel(Level.ALL);

并附加我用于其他调试的控制台处理程序

            ConsoleHandler ch = new ConsoleHandler();
            ch.setFormatter(new com.jthink.songkong.logging.LogFormatter());
            ch.setLevel(Level.FINEST);
            MainWindow.logger.addHandler(ch);
            hibernateLogger.addHandler(ch);

但它没有任何效果,没有 Hibernate 日志记录写入控制台。

所以我认为问题是默认为 log4 或其他东西,但我不知道如何改变这种行为。我将 Hibernate 作为我的 maven 应用程序 (pom.xml) 的一部分,并且如果可能的话,我希望以编程方式选择标准日志记录。

最佳答案

记录仪受 garbage collection 的约束。您的代码中的一个错误如下: Logger hibernateLogger = Logger.getLogger("org.hibernate.SQL");

删除该行并创建一个常量:

private static final Logger hibernateLogger = Logger.getLogger("org.hibernate.SQL");

只有在 code at run-time demands the logger 的情况下,在配置文件中定义它才有效。 .

关于java - 如何配置 Hibernate 以使用标准日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57627609/

相关文章:

Java - 使用 binarySearch 查找数组中特定元素的出现次数,无需 If

java - 基本 String.match 不匹配

Java:为机器人屏幕截图生成随机文件名

java - 如何自动增加postgresql中的id?

java - 使用文件处理程序创建目录

java - 带有 C++ 的 JNI 在 cout、printf 和方法调用上不断崩溃

java - JPA(hibernate)onetomany关系

Java 应用服务器性能

java - 如何使 Tomcat 中的日志轮换工作

java - 如何完全禁用 JAudioTagger 记录器