8

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

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

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

任何想法都是最有帮助的

问候

4

1 回答 1

5

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

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

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

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

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

于 2011-01-14T21:09:45.950 回答