sql_show = true
hibernate中的这个属性打印出运行的sql,但我想查看begin transaction
和complete transaction
语句,以便我可以跟踪事务持续时间并查看在哪个事务中运行的查询
谷歌搜索显示
log4j.logger.org.hibernate.SQL = DEBUG, defaultAppender
log4j.logger.org.hibernate.type = DEBUG, defaultAppender
log4j.logger.org.hibernate.transaction=DEBUG, defaultAppender
也应该显示交易级别数据。 但它没有。
调查更多我查看了hibernate代码并找到了一个类名
org.hibernate.ejb.TransactionImpl
此类具有begin和complete方法,但此方法不记录任何内容。
有关如何在休眠中查看交易级别信息的任何建议 ?
我正在使用hibernate 2.2
答案 0 :(得分:14)
对于SLF4J日志记录:
<logger name="org.hibernate.engine.transaction.internal.TransactionImpl" level="debug"/>
对于Log4j:
<logger name="org.hibernate.engine.transaction.internal.TransactionImpl">
<level value="DEBUG"/>
</logger>
您需要为以下类设置日志记录阈值为DEBUG:
对于JDBC事务(例如RESOURCE_LOCAL)
对于SLF4J日志记录:
<logger name="org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction" level="debug"/>
对于Log4j:
<logger name="org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction">
<level value="DEBUG"/>
</logger>
对于JTA交易
对于SLF4J日志记录:
<logger name="org.hibernate.engine.transaction.internal.jta.JtaTransaction" level="debug"/>
对于Log4j:
<logger name="org.hibernate.engine.transaction.internal.jta.JtaTransaction">
<level value="DEBUG"/>
</logger>
最好为尽可能少的类激活DEBUG级别,否则,您的日志大小将会急剧增加。
答案 1 :(得分:4)
尝试设置hibernate generate_statistics属性
<prop key="hibernate.generate_statistics">true</prop>
并设置
log4j.logger.org.hibernate=DEBUG
然后你会看到所有的hibernate日志,你将能够正确选择hibernate类来登录log4j配置文件
答案 2 :(得分:0)
如果您还想查看新创建的事务的事务隔离级别:
log4j.logger.org.springframework.transaction.support.AbstractPlatformTransactionManager =调试 log4j.logger.org.springframework.orm.hibernate5.HibernateTransactionManager =调试 log4j.logger.org.springframework.orm.jpa.JpaTransactionManager =调试 log4j.logger.org.springframework.jdbc.datasource.DataSourceTransactionManager = debug
答案 3 :(得分:0)
启用这些日志可能也有帮助
<logger name="org.hibernate.resource.transaction" level="debug"/>
<logger name="org.hibernate.resource.jdbc" level="debug"/>
<logger name="org.hibernate.internal.SessionImpl" level="debug"/>
<logger name="org.hibernate.internal.SessionFactoryImpl" level="debug"/>
(休眠5)
它打印有关会话开始/结束和其他相关详细信息的日志
[org.hibernate.internal.SessionImpl](默认任务19)在时间戳记下打开了会话[8c3ecbac-91b5-4dd8-b012-bfb1b4fe476c]:1592951456170 .....
[org.hibernate.internal.SessionImpl](默认任务19)关闭会话[8c3ecbac-91b5-4dd8-b012-bfb1b4fe476c] ....... [org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl](默认任务19)逻辑连接已关闭