Spring Hibernate 事务日志记录

7

我们如何记录Spring事务机制。我在下面展示了一个例子,该例子来自Spring文档第10.5.2节。如果我想要记录到这个级别,应该怎么做。

我正在使用Spring、Hibernate和Log4j。

<!-- the Spring container is starting up... -->
[AspectJInvocationContextExposingAdvisorAutoProxyCreator] - Creating implicit proxy
for bean 'fooService' with 0 common interceptors and 1 specific interceptors
<!-- the DefaultFooService is actually proxied -->
[JdkDynamicAopProxy] - Creating JDK dynamic proxy for [x.y.service.DefaultFooService]
<!-- ... the insertFoo(..) method is now being invoked on the proxy -->
[TransactionInterceptor] - Getting transaction for x.y.service.FooService.insertFoo
<!-- the transactional advice kicks in here... -->
[DataSourceTransactionManager] - Creating new transaction with name    [x.y.service.FooService.insertFoo]
[DataSourceTransactionManager] - Acquired Connection
[org.apache.commons.dbcp.PoolableConnection@a53de4] for JDBC transaction
<!-- the insertFoo(..) method from DefaultFooService throws an exception... -->
[RuleBasedTransactionAttribute] - Applying rules to determine whether transaction should
rollback on java.lang.UnsupportedOperationException
[TransactionInterceptor] - Invoking rollback for transaction on x.y.service.FooService.insertFoo
due to throwable [java.lang.UnsupportedOperationException]

<!-- and the transaction is rolled back (by default, RuntimeException instances cause rollback) -->
[DataSourceTransactionManager] - Rolling back JDBC transaction on Connection
[org.apache.commons.dbcp.PoolableConnection@a53de4]
[DataSourceTransactionManager] - Releasing JDBC Connection after transaction
[DataSourceUtils] - Returning JDBC Connection to DataSource

Exception in thread "main" java.lang.UnsupportedOperationException
at x.y.service.DefaultFooService.insertFoo(DefaultFooService.java:14)
<!-- AOP infrastructure stack trace elements removed for clarity -->
at $Proxy0.insertFoo(Unknown Source)

记录日志文件...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=info, stdout
log4j.category.org.springframework.transactions=DEBUG  
3个回答

9

Spring参考文档中有一个关于日志记录的章节

其中介绍了如何配置不同的日志框架,其中包括log4j

在您的情况下,配置文件的最后一行应该是:

log4j.logger.org.springframework.transaction=DEBUG

@Lucas 谢谢。我已经放置了我的log4j属性文件。你能否建议一些更改,以帮助我使用Spring、Hibernate记录我的J2EE应用程序? - Vish
我们需要为使用log4j.category进行一些配置吗?因为它在我的应用程序中无法正常工作。 :( - Vish
@Vish 我从Spring文档中复制了这个,但在log4j文档中找不到它。现在改为logger - Sean Patrick Floyd
此外,在Spring 3.1中,命名空间为org.springframework.transaction,没有“s”。 - Nick Spacek
有没有办法记录该事务使用的数据源或连接池? - shwetap
如何将log4j转换为log4j2版本?log4j.logger.org.springframework.transaction=DEBUG。请帮我解决这个问题。 - undefined

8
如果您只想设置spring事务支持的日志级别,请尝试将以下记录器添加到您的log4j.xml文件中:
<logger name="org.springframework.transaction">
        <level value="DEBUG" />
</logger>

0

对于 Hibernate 4 及以上版本,您可以使用以下方法:

org.hibernate.engine.transaction.internal.TransactionImpl = DEBUB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接