【问题标题】:Fluent NHibernate and NLog流畅的 NHibernate 和 NLog
【发布时间】:2012-06-12 17:20:48
【问题描述】:

我的流畅配置中出现了一些模糊的错误。我已经读过设置日志记录解决方案将帮助我解决这个问题。我想使用 NLog。我知道我需要使用 Common.Logging 2.0 和 NHibernate.IInterfaceLogger 来启动和运行它。我只是不知道如何把这些碎片放在一起。我的系统基于洋葱架构。我为 NLog 设置了我的日志服务,并且我有我的接口,但我只是有点困惑我应该在哪里将所有这些绑定在一起。我的数据项目中存在我的 Fluent NHibernate 配置。我假设我想在那里将所有这些绑定在一起。

对此的任何想法都会很棒!我有点失落!

【问题讨论】:

  • 不确定 NLog。但是只要将 log4net 添加到引用并配置。 NHibernate 会喜欢使用它。去log4net。应该是 IMO 的首选记录器。
  • log4net 支持嵌入在 NH 中,但是很多人在配置它时遇到了很多麻烦 - 我当然做到了。根据下面的答案,NLog 看起来要简单得多(我自己还没有尝试过......)。

标签: c# nhibernate fluent-nhibernate nlog onion-architecture


【解决方案1】:

NHibernate.NLog nuget 包执行此操作。我现在在一个项目中使用它。

为了完整起见,或者如果该包消失或用户不使用 nuget。 您将其添加到您的 FluentConfiguration:

.ExposeConfiguration(c =>
    {
        c.SetProperty(@"nhibernate-logger", @"Microfilm.Core.NLogFactory, Microfilm.Core");
    })

实现ILoggerFactory 以返回实现IInternalLogger 的类。 IInternalLogger 方法中包含的内容非常简单;您只是将 NHibernate 记录器的调用桥接到 NLog 调用。

【讨论】:

  • 您是否使用 Fluent Configuration 对此进行了测试?它对我不起作用,NHibernate.LoggerProvider 的源代码显示它从应用程序设置中获取记录器工厂的类。没有回退到 NHibernate 配置,所以 config.SetProperty 不可能工作。
  • 关于.ExposeConfiguration 的那一点 FluentNHibernate。我正在使用 FluentNHibernate v1.3 和 NHibernate 3.2
  • 正如其他一些帖子中提到的,ExposeConfiguration 对我没有任何作用。但我将此添加到 web.config 中的 appSettings 并且效果很好:
  • 我很想知道为什么 .ExposeConfiguration 对某些人不起作用。它是 FluentConfiguration 类中的一个方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
相关资源
最近更新 更多