c# - NServiceBus 对 NHibernate 的使用是否会在使用 Log4Net 进行日志记录时暴露出来?

标签 c# nhibernate log4net nservicebus

我希望能够通过日志记录显示 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/

相关文章:

c# - log4net 特定类应使用 appender

log4net - 如何使用 log4net 在 Spring.NET 中配置日志记录?

asp.net - MVC、IIS 和 Azure 日志记录错误

c# - 为什么我无法逃脱问号(C#)?

c# - 在类定义中强制偏好重载?

c# - 如何从类型中获取 NHibernate.Type.IType?

c# - 在 nHibernate 中管理嵌套事务

c# - 在 NHibernate 中将实体设为只写

c# - 重定向到 Session_end 事件的另一个页面

c# - 无法找到列