Bhu*_*van 12 java hibernate log4j transactions glassfish
sql_show = true
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
还应该显示交易级别数据.但它没有.
调查更多我查看了hibernate代码并找到了一个类名
org.hibernate.ejb.TransactionImpl
Run Code Online (Sandbox Code Playgroud)
这个类有begin和complete方法,但是这个方法不记录任何东西.
有关如何在hibernate中查看事务级别信息的任何建议?
我正在使用hibernate 2.2
Vla*_*cea 16
对于SLF4J日志记录:
<logger name="org.hibernate.engine.transaction.internal.TransactionImpl" level="debug"/>
Run Code Online (Sandbox Code Playgroud)对于Log4j:
<logger name="org.hibernate.engine.transaction.internal.TransactionImpl">
<level value="DEBUG"/>
</logger>
Run Code Online (Sandbox Code Playgroud)您需要为以下类将日志记录阈值设置为DEBUG:
对于JDBC事务(例如RESOURCE_LOCAL)
对于SLF4J日志记录:
<logger name="org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction" level="debug"/>
Run Code Online (Sandbox Code Playgroud)对于Log4j:
<logger name="org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction">
<level value="DEBUG"/>
</logger>
Run Code Online (Sandbox Code Playgroud)对于JTA交易
对于SLF4J日志记录:
<logger name="org.hibernate.engine.transaction.internal.jta.JtaTransaction" level="debug"/>
Run Code Online (Sandbox Code Playgroud)对于Log4j:
<logger name="org.hibernate.engine.transaction.internal.jta.JtaTransaction">
<level value="DEBUG"/>
</logger>
Run Code Online (Sandbox Code Playgroud)最好为尽可能少的类激活DEBUG级别,否则,您的日志大小将显着增加.
小智 5
尝试设置休眠的generate_statistics属性
<prop key="hibernate.generate_statistics">true</prop>
Run Code Online (Sandbox Code Playgroud)
并设置
log4j.logger.org.hibernate=DEBUG
Run Code Online (Sandbox Code Playgroud)
那么您将看到所有休眠日志,并且您将能够正确选择休眠类来登录log4j配置文件
| 归档时间: |
|
| 查看次数: |
9827 次 |
| 最近记录: |