3.5. 日志

Hibernate使用Apache commons-logging来为各种事件记录日志.

commons-logging将直接输出到Apache Log4j(如果在类路径中包括log4j.jar)或 JDK1.4 logging (如果运行在JDK1.4或以上的环境下). 你可以从http://jakarta.apache.org 下载Log4j. 要使用Log4j,你需要将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在解析查询的时候,记录HQL和SQL的AST分析日志
org.hibernate.secure为JAAS认证请求做日志
org.hibernate为任何Hibernate相关信息做日志 (信息量较大, 但对查错非常有帮助)

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