2010-05-14 188 views
5

在我的Prism/CAL WPF应用程序中实现NLog的最佳方式是什么?这可能是一个业余爱好者的问题,我对整个Prism框架有点新颖:)正确实施NLog和Prism

我想过在基础设施模块中引用NLog dll并创建一个包装单例类,例如, MyLogger。我的想法是能够在一个中心位置的某个地方引用1个记录器实现,而且我所知道的唯一一件事情就是您的基础架构模块。

明显的另一种方法是添加到每个模块的NLog的引用,但我认为这将打破解耦的目的和所有这一切。

任何想法将是最有帮助

问候

回答

4

我建议类似于您的第一个想法的东西,虽然它利用Prism中已经存在的接口。

虽然我不知道在NLOG提供给你确切的方法签名,你可能要考虑使用棱镜的ILoggerFacade接口,这通常是在你的引导程序规定(见的,这是如何以身作则的StockTraderRI应用向上)。通常情况下,这会作为传递到Microsoft's Composite Logging interface,但没有理由不能用它来挂钩到自己的记录器中。

的几个原因来考虑这种做法:

  1. 它使用现有ILoggerFacade接口棱镜框架,其他开发人员熟悉
  2. 如果以后决定去一个不同的日志框架,你只需要更换ILoggerFacade实施

背后的对象另一种方法是做你的建议:创建定义到一个NLOG的服务接口(或暴露的现有NLOG INTERF ace),并在引导程序中注册该服务的实现。然后,您可以使用您的依赖注入容器来获取模块中对记录器服务的引用。但是,请注意,这真的只是再现了ILoggerFacade界面已经给你的东西。