在学习使用DI工具进行爬行时,我希望有人可以帮助我将一些概念应用于相对简单的场景:
* Log4NetLogger : ILogger
* DebugLogger : ILogger
* NullLogger : ILogger (no output: saves time & noise)
当我的应用程序运行时,我希望ILog成为Log4NetLogger,并且在进行单元测试时,我希望它是DebugLogger或NullLogger。
我一直在查看使用WindsorInstallers的GuyWire实现that I like。不偏向于任何其他DI工具并理解安装程序的概念,如果不是很多细微差别,Windsor似乎与任何其他容器一样好。
那么,我是否有一个ProductionLoggingInstaller连接Log4Net和TestLoggingInstaller呢?如何将测试切换为DebugLogger或NullLogger?
然后有MEF,我现在已经足够认为它既可以解决这个'问题',也不确定是否没有任何容器或者除了包含之外。
那么你如何应用GuyWire,Windsor和/或MEF的某些组合来解决这里的日志记录解决方案呢?
干杯,
Berryl
注意:我专门使用此日志记录方案应用一些依赖注入工具(即MEF,Windsor,GuyWire等),而不是特定日志工具的app.config
答案 0 :(得分:0)
您可以通过更改te 配置部分来解决生产和测试中的不同行为。任何基于良好的记录器都应该提供一套完整的appender(甚至是空的appender)并让IoC负责选择引擎,而不是引擎本身的配置方式。
答案 1 :(得分:0)
看一下Common Log(http://netcommon.sourceforge.net/docs/1.2.0/reference/html/logging.html)。它允许您编写一个接口,然后通过配置文件更改记录器。