包装log4net以减少反模式的耦合?

时间:2009-12-24 06:12:24

标签: design-patterns architecture log4net

是否包装log4net以减少反模式的耦合?或者将logger实例注入公共属性和反模式?你如何处理log4net依赖?

3 个答案:

答案 0 :(得分:1)

出于以下原因包装记录器 -

  1. 它将更改仅隔离到记录器,将来如果您想将其更改为更好的级联更改。
  2. 当您想编写测试用例时,它会让您的生活变得轻松。您可以轻松模拟所需的东西。
  3. 如果由于某些原因,您需要在应用中使用多个记录器,那么包装器会有所帮助。您可以通过某些工厂/注册表更改记录器。例如 - 如果代码在您希望拥有不同记录器的不同平台/环境之间共享。您可以使其工厂/注册表驱动。
  4. 所以,我的观点很好。

答案 1 :(得分:0)

在.NET社区的前沿,service locatorconsideredanti-pattern。我会说日志记录通常是我们应用程序的一个非常好的功能。它基本上是“只写”。我们永远不会根据日志记录系统的查询做出决定。

log4net也是一个易于关闭的系统,不会抛出异常,无声地失败,可以动态更新其配置......几乎没有理由在实现后更换实现。

所以,我说,在应用程序代码中,可以直接使用它。

答案 2 :(得分:0)

我们定义一个日志记录接口,并具有log4net实现,unitTest实现和null实现。

我们使用依赖注入来传递loggingInterface实现。

单元测试实现还有其他方法,比如'bool ErrorWasLogged()',因此在我们的单元测试中,我们可以断言记录了重要信息。对于我们对测试记录内容不感兴趣的测试,我们使用null实现。