我希望能够通过日志记录显示 NServiceBus 对 NHibernate 的使用。特别是,我想查看事务何时提交或回滚。
我们目前正在调查一个与我们的 Sagas 相关的问题,回滚过程似乎由于数据库锁定而失败。我们想确认它是否以及何时尝试回滚或提交,以及这是否成功。
我们目前正在使用 Log4Net 独立记录 NServiceBus 和 NHibernate 的事件,但不接收有关 Saga 事务的日志记录信息 - 提交/回滚。
非常感谢。
最佳答案
如果您已经在使用 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/
看一下,您应该能够添加任何新 key ,这些 key 可能会满足您的需求。
您可能会在配置中添加拦截器或事件监听器,这基本上是一个类,当 NHibernate 即将执行某些操作(例如保存/更新/事务/等)时将调用该类。如果需要,您可以在 Google 上搜索 NHibernate 拦截器和/或事件监听器,以全面了解它们的作用以及如何使用它们,或者访问此处的 NHibernate 文档:http://nhibernate.info/doc/nh/en/index.html#objectstate-events
关于c# - NServiceBus 对 NHibernate 的使用是否会在使用 Log4Net 进行日志记录时暴露出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11795690/