我希望能够通过日志记录来公开NServiceBus对NHibernate的使用。简而言之,我希望看到事务何时被提交或回滚。
我们目前正在调查我们的一个Sagas中的一个问题,其中似乎回滚过程由于数据库锁定而失败。我们想确认它是否以及何时尝试回滚或提交,以及这是否成功。
我们目前正在使用Log4Net独立地记录NServiceBus和NHibernate的活动,但没有收到关于Saga事务的日志记录信息-提交/回滚。
在此之前,非常感谢您。
发布于 2012-08-04 00:08:35
如果您已经在使用Log4Net记录NHibernate活动,那么您应该已经能够看到任何基于事务的NHibernate日志记录信息,除非您的配置被设置为从日志记录中过滤掉某些NHibernate类。
请看下面关于配置Log4Net以记录NHibernate日志记录消息的文章。完成此操作后,您应该能够看到所有日志记录数据。
Configure Log4Net for use with NHibernate
您还可以通过在Log4Net配置中添加以下节点来显式设置Log4Net记录器以捕获事务日志记录消息:
<logger name="NHibernate.Transaction.AdoTransaction">
<level value="DEBUG" />
</logger>如果这不起作用,您可以更深入地挖掘。这里有一些需要考虑的东西来帮助你入门:
让我在开始之前声明,我从未在NServiceBus中使用过Sagas,但我做了一些研究,以下是我可以得出的结论。
NServiceBus在内部创建了自己的NHibernate配置来处理持久化Sagas。该NHibernate配置实例的配置在.config文件中完成。看看下一页的Sagas标题,看看配置是什么样子的:
http://docs.particular.net/nservicebus/nhibernate/
看一下这一点,你应该能够添加任何新的密钥,这可能会得到你需要的东西。
您可以将拦截器或事件侦听器添加到配置中,这基本上是一个类,当NHibernate将要执行某些操作(如保存/更新/事务/等)时将调用此类。如果需要,您可以搜索NHibernate拦截器和/或事件侦听器,以全面了解它们的作用以及如何使用它们,或者访问NHibernate文档:http://nhibernate.info/doc/nh/en/index.html#objectstate-events
https://stackoverflow.com/questions/11795690
复制相似问题