3.5. 日志

优质
小牛编辑
136浏览
2023-12-01

Hibernate 利用 Simple Logging Facade for Java (SLF4J) 来记录不同系统事件的日志。SLF4J 可以根据你选择的绑定把日志输出到几个日志框架(NOP、Simple、log4j version 1.2、JDK 1.4 logging、JCL 或 logback)上。为了设置日志,你需要在 classpath 里加入 slf4j-api.jar 和你选择的绑定的 JAR 文件(使用 Log4J 时加入 slf4j-log4j12.jar)。更多的细节请参考 SLF4J 文档。要使用 Log4j,你也需要在 classpath 里加入 log4j.properties 文件。Hibernate 里的 src/ 目录里带有一个属性文件的例子。

我们强烈建议你熟悉一下 Hibernate 的日志消息。在不失可读性的前提下,我们做了很多工作,使 Hibernate 的日志可能地详细。这是必要的查错利器。最令人感兴趣的日志分类有如下这些:

表 3.9. Hibernate 日志类别

类别功能
org.hibernate.SQL在所有 SQL DML 语句被执行时为它们记录日志
org.hibernate.type为所有 JDBC 参数记录日志
org.hibernate.tool.hbm2ddl在所有 SQL DDL 语句执行时为它们记录日志
org.hibernate.pretty在 session 清洗(flush)时,为所有与其关联的实体(最多 20 个)的状态记录日志
org.hibernate.cache为所有二级缓存的活动记录日志
org.hibernate.transaction为事务相关的活动记录日志
org.hibernate.jdbc为所有 JDBC 资源的获取记录日志
org.hibernate.hql.ast.AST在解析查询的时候,记录 HQL 和 SQL 的 AST 分析日志
org.hibernate.secure为 JAAS 认证请求做日志
org.hibernate为任何 Hibernate 相关信息记录日志(信息量较大,但对查错非常有帮助)

在使用 Hibernate 开发应用程序时,你应当总是为 org.hibernate.SQL 开启 debug 级别的日志记录,或者开启 hibernate.show_sql 属性。