【问题标题】:Proper implementation of NLog and Prism正确实施 NLog 和 Prism
【发布时间】:2011-02-19 11:09:24
【问题描述】:

在我的 Prism / CAL WPF 应用程序中实现 NLog 的最佳方式是什么。这可能是一个业余问题,我对整个 Prism 框架有点陌生:)

我考虑过将 NLog dll 的引用放在 Infrastructure 模块中并制作一个包装器单例类,例如我的记录器。我的想法是能够在所有东西都引用的中心位置的某个地方引用 1 个记录器实现,而我在 Prism 中唯一知道的就是您的基础架构模块。

另一种显而易见的方法是向每个模块添加对 NLog 的引用,但我认为这会破坏解耦的目的以及所有这些。

任何想法都会很有帮助

问候

【问题讨论】:

    标签: c# wpf prism nlog prism-2


    【解决方案1】:

    我会推荐与您的第一个想法类似的东西,尽管它利用了 Prism 中已经存在的界面。

    虽然我不确定 NLog 中可用的确切方法签名,但您可能需要考虑使用 Prism 的 ILoggerFacade 接口,该接口通常在您的引导程序中定义(请参阅 StockTraderRI 应用程序以获取有关如何使用的示例这是设置的)。通常,这充当到Microsoft's Composite Logging interface 的传递,但没有理由不能使用它来挂钩到您自己的记录器。

    考虑这种方法的几个原因:

    1. 它使用 Prism 框架中已经存在的 ILoggerFacade 接口,其他开发人员将熟悉该接口
    2. 如果您以后决定使用不同的日志记录框架,则只需替换 ILoggerFacade 实现背后的对象

    另一种方法是按照您的建议进行操作:在您的基础结构 DLL 中创建一个定义 NLog 服务(或公开现有 NLog 接口)的接口,并在您的引导程序中注册该服务的实现。然后,您可以使用依赖注入容器来获取对模块中记录器服务的引用。但是请注意,这实际上只是再现了 ILoggerFacade 接口已经为您提供的功能。

    【讨论】:

      猜你喜欢
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 2019-03-07
      • 1970-01-01
      • 2012-02-19
      • 2019-02-01
      • 1970-01-01
      相关资源
      最近更新 更多