3

我希望能够通过日志记录 NServiceBus 对 NHibernate 的使用。特别是,我想看看何时提交或回滚事务。

我们目前正在调查其中一个 Sagas 的问题,在该问题上,回滚过程似乎由于 DB 锁定而失败。我们想确认它是否以及何时尝试回滚或提交,以及这是否成功。

我们目前正在使用 Log4Net 独立地记录 NServiceBus 和 NHibernate 的活动,但不接收有关 Saga 事务的日志信息 - 提交/回滚。

提前谢谢了。

4

1 回答 1

1

如果您已经在使用 Log4Net 来记录 NHibernate 活动,那么您应该已经能够看到任何基于事务的 NHibernate 日志信息,除非您的配置设置为从日志中过滤掉某些 NHibernate 类。

请查看以下有关配置 Log4Net 以记录 NHibernate 日志消息的文章。完成后,您应该能够看到所有日志记录数据。

配置 Log4Net 以与 NHibernate 一起使用

您还可以通过在 Log4Net 配置中添加此节点来显式设置 Log4Net 记录器以捕获事务记录消息:

<logger name="NHibernate.Transaction.AdoTransaction">
  <level value="DEBUG" />
</logger>

如果这不起作用,您可以深入挖掘。这里有一些东西可以帮助你开始:

让我先声明我从未将 Sagas 与 NServiceBus 一起使用,但做了一些研究,这就是我可以得出的结论。

NServiceBus 在内部创建自己的 NHibernate 配置来处理持久化的 Sagas。NHibernate 配置实例的配置在 .config 文件中完成。查看下一页上的 Sagas 标题,了解配置的外观:

http://docs.particular.net/nservicebus/nhibernate/

看一下,您应该能够添加任何新的密钥来满足您的需求。

您可能会在配置中添加一个拦截器或事件侦听器,这基本上是一个类,当 NHibernate 将要执行某些操作(例如保存/更新/事务/等)时将调用该类。如果需要,您可以在 Google 上搜索 NHibernate 拦截器和/或事件侦听器,以全面了解它们的功能以及如何使用它们,或访问此处的 NHibernate 文档:http: //nhibernate.info/doc/nh/en/ index.html#objectstate-events

于 2012-08-03T16:08:35.400 回答