2010-05-14 238 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界面已經給你的東西。