在使用Log4Net进行日志记录时,NServiceBus可以使用NHibernate吗?

时间:2012-08-03 12:24:36

标签: c# nhibernate log4net nservicebus

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

我们目前正在调查我们的一个Sagas的问题,因为数据库锁定导致回滚过程失败。我们想确认它是否以及何时尝试回滚或提交,以及这是否成功。

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

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

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

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

Configure Log4Net for use with 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执行某些操作时调用的类,如保存/更新/事务/等。你可以谷歌周围的NHibernate拦截器和/或事件监听器,如果需要了解他们做什么以及如何使用它们或访问NHibernate文档:http://nhibernate.info/doc/nh/en/index.html#objectstate-events