gpt4 book ai didi

c# - 正确实现 NLog 和 Prism

转载 作者:太空狗 更新时间:2023-10-29 21:47:40 24 4
gpt4 key购买 nike

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

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

另一种明显的方法是向每个模块添加对 NLog 的引用,但我认为这会破坏解耦和所有其他目的。

任何想法都是最有帮助的

问候

最佳答案

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

虽然我不确定 NLog 中可用的确切方法签名,但您可能需要考虑使用 Prism 的 ILoggerFacade接口(interface),通常在您的 Bootstrapper 中定义(请参阅 StockTraderRI 应用程序了解如何设置的示例)。通常,这充当通向 Microsoft's Composite Logging interface 的 channel 。 ,但您没有理由不能使用它来连接到您自己的记录器。

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

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

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

关于c# - 正确实现 NLog 和 Prism,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2833207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com