NServiceBus是否可以在Log4Net中记录NHibernate的使用?

3
我希望能够通过日志记录来暴露NServiceBus使用NHibernate的情况。特别地,我想看到事务何时提交或回滚。
我们目前正在调查一个Saga的问题,其中似乎由于DB锁定而导致回滚过程失败。我们想确认是否在尝试回滚或提交以及是否成功。
我们目前使用Log4Net来独立记录NServiceBus和NHibernate的活动,但不会收到有关Saga事务(提交/回滚)的日志信息。
非常感谢您的帮助。
1个回答

1

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

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

为NHibernate配置Log4Net

您还可以显式地设置一个Log4Net记录器来捕获事务日志消息,方法是在Log4Net配置中添加此节点:

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

如果那不起作用,你可以深入一点。以下是一些要考虑的事情,以帮助你开始:

首先声明,我从未使用过 NServiceBus 的 Sagas,但经过一些研究,我得出了以下结论。

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

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

看一下这个,你应该能够添加任何新的键,以便获得你需要的内容。

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


感谢您的回复,Randy。非常有用!我已经在NServiceBus网站上找到了文档,但是错过了关于Saga的特定部分,因为我认为它不是一个特定的用法。我会进一步研究并进行更新。在这种情况下,代码更改是最后的选择,因此我们将首先通过配置使其正常工作。再次感谢(IOU 1 x +1,在获得足够的声望时)。 - a humble developer
没问题。另外,阅读我的帖子后,我发现我忘记包含一个链接,所以我添加了一篇关于如何配置Log4Net与NHibernate的文章链接。是的,希望这只是你那边的配置更改。祝你好运! - Randy Burden

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