java - 关闭特定查询的 Hibernate 日志

标签 java hibernate log4j ejb-3.0

您可以在 Hibernate/EJB 3.0 中关闭某些查询的日志消息吗?

有没有办法为单个查询覆盖参数“hibernate.show_sql”?

最佳答案

从 hibernate 配置来看,我认为这是不可能的。

Hibernate 为您提供了两种记录查询的方法:通过将 hibernate 参数 hibernate.show_sql 设置为 true 或通过将日志类别 org.hibernate.SQL 设置为 DEBUG。两种方式都是独立的,如果您同时使用这两种方式,您的查询将被记录两次。

我更喜欢使用第二种方式:它更加灵活,因为您可以在运行时通过 jmx-console 更改它(如果您使用 jboss,这是开箱即用的)。
而且,hibernate 正在使用 apache 公共(public)日志记录(使用 hibernate.show_sql,hibernate 只是将请求写入 System.out)。

我认为可以为给定类别提供 Logger 的自定义实现(我不知道这有多容易或多难,我从来没有做过)。然后,您只需在 Logger 实现中提供决定是否记录请求的逻辑。

关于java - 关闭特定查询的 Hibernate 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468346/

相关文章:

java - Android 后退按钮无法正常使用

java - 静态单例类变为 null

java - 存在多个 log4j.properties 时 log4j 的行为

java - log4j 不读取其 log4j.properties 文件

java - 如何在 Netbeans IDE 中制作静态类

java - 将可变数量的参数从表单传递到struts 2中的 Action

java - 使用 View 作为与 Hibernate 的连接表

java - Ljava.lang.Object; Hibernate Repository 获取多个字段时不能强制转换

java - JPA2/Hibernate - 即时创建模式(即无需手动预先创建模式)?

java - 动态加载属性文件中的属性值