如何配置 Hibernate 以使用标准日志记录
How do I configure Hibernate to use standard 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) 中,如果可能的话,我想以编程方式 select 标准日志记录。
记录器受 约束。您的代码中的一个错误如下:
Logger hibernateLogger = Logger.getLogger("org.hibernate.SQL");
删除该行并创建一个常量:
private static final Logger hibernateLogger = Logger.getLogger("org.hibernate.SQL");
只有在 .
的情况下,在配置文件中定义它才有效
我在 https://docs.jboss.org/hibernate/orm/4.3/topical/html/logging/Logging.html
找到了解决方案
我正在使用 Hibernate 4.3.11,问题是 Hibernate 会根据 class 路径上加载的内容自动选择日志记录框架,并且仅将标准日志记录用作最后的手段。
我在我的构建中使用 Maven 并且没有明确包含任何其他日志记录框架,但这并不是说我使用的第 3 方库之一不包含它,这使得 jboss 框架存在根本性缺陷。
添加以下系统属性
-Dorg.jboss.logging.provider=jdk
解决问题。
我个人认为所有这些第 3 方日志记录框架没有什么价值,如果标准日志记录存在缺陷,那么应该通过修复标准日志记录来解决这些缺陷,但它对我来说一直很有效。
此外,由于日志记录对性能至关重要,Java 工程师似乎在标准日志记录方面比第 3 方日志记录具有优势,他们可以根据对 VM 的更好了解以及它是标准 class.
如何配置 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) 中,如果可能的话,我想以编程方式 select 标准日志记录。
记录器受 Logger hibernateLogger = Logger.getLogger("org.hibernate.SQL");
删除该行并创建一个常量:
private static final Logger hibernateLogger = Logger.getLogger("org.hibernate.SQL");
只有在
我在 https://docs.jboss.org/hibernate/orm/4.3/topical/html/logging/Logging.html
找到了解决方案我正在使用 Hibernate 4.3.11,问题是 Hibernate 会根据 class 路径上加载的内容自动选择日志记录框架,并且仅将标准日志记录用作最后的手段。
我在我的构建中使用 Maven 并且没有明确包含任何其他日志记录框架,但这并不是说我使用的第 3 方库之一不包含它,这使得 jboss 框架存在根本性缺陷。
添加以下系统属性
-Dorg.jboss.logging.provider=jdk
解决问题。
我个人认为所有这些第 3 方日志记录框架没有什么价值,如果标准日志记录存在缺陷,那么应该通过修复标准日志记录来解决这些缺陷,但它对我来说一直很有效。
此外,由于日志记录对性能至关重要,Java 工程师似乎在标准日志记录方面比第 3 方日志记录具有优势,他们可以根据对 VM 的更好了解以及它是标准 class.