日志记录框架是应该注入到需要它们的类中,还是应该让每个需要它的类都知道这个框架并直接使用它?我正在使用Log4Net,目前我正在将一个服务注入到需要能够记录日志的类中,它包装了这个框架,知道日志记录可能不会改变,并且大多数部分都需要它,在这种意义上注入答案吗?
发布于 2009-08-21 18:38:31
从长远来看,注入更加灵活,因为你可以很容易地有选择地注入到某些地方,并有选择地禁用日志记录等。
发布于 2009-08-21 18:38:45
我认为注射它没有什么错。他们建议仅出于性能原因而使用静态变量,但我认为这与在启动时注入记录器没有什么不同。
发布于 2009-08-21 18:42:01
如果内存性能不是太大的问题,你可以考虑面向方面编程,例如使用PostSharp。这样,您的类根本不需要知道记录器。基本上,您可以将IL代码作为构建后步骤直接注入到您的程序集中。PostSharp使用属性来标记方法、类甚至整个程序集。甚至还有一个用于使用log4net进行日志记录的plugin。
编辑:我提到了内存,因为每个属性都会为每个连接点创建一个新对象。
https://stackoverflow.com/questions/1313591
复制相似问题