将log4net包装以减少耦合是一种反模式吗?

3

将log4net包装以减少耦合是反模式吗?或者将日志记录器实例注入公共属性是反模式吗?你如何处理log4net依赖性?


你能解释一下什么是横向层吗? - ewall
我所说的横向是指这个层将对所有其他层可用,就像一个安全层。 - Oscar Cabrero
3个回答

1

为以下原因包装记录器 -

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

因此,我的观点是将其包装起来很好。


0

在.NET社区的许多领先者眼中,服务定位器 被认为 是一种反模式。我认为日志通常是应用程序中非常基本的功能之一。它本质上是“只写”的。我们从来不会根据查询日志系统做出决策。

log4net也是一个易于关闭、不会引发异常、悄悄失败并可以在运行时更新其配置的系统……几乎没有理由在接入后更换实现。

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


0
我们定义了一个日志接口,并有log4net实现、unitTest实现和null实现。
我们使用依赖注入来传递loggingInterface实现。 unitTest实现有额外的方法,比如'bool ErrorWasLogged()',这样在我们的单元测试中,我们可以断言重要信息是否被记录。对于我们不感兴趣测试记录内容的测试,我们使用null实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接