2012-02-13 79 views
1

我最近一直在通过依赖注入来学习控制反转,并使用Castle Windsor。我喜欢。我知道了。我头上的灯泡燃烧得很明亮。但我对测井设备和接口有一个唠叨的担心。那里真的在做什么?对我来说,还是只为温莎本身?Castle Windsor的日志记录工具有哪些用例?

由于​​旨在抽象出log4net和Nlog以及它支持的任何其他日志框架之间的差异,因此它必须表示它们之间的最小公分母。各种框架是相似的,但不一定完全相同。如果其中一个有一些奇妙的功能,但不是其他的,那么它将不得不被排除在​​之外,或者其他日志记录框架的​​实现将不得不具有它的无操作实现,或者其他不是很满意。

早在温莎之前,我就是log4net的粉丝,很多我最喜欢的库都使用它,比如NHibernate。所以如果我正在构建一个新的应用程序,我将使用log4net。我愿意承诺,并且我认为它是一个稳定的依赖关系 - 作为稳定的依赖关系,例如需要System.Web。我不会写我的组件使用​​,我会写他们使用ILog。但我的印象是,温莎希望我使用​​进行自己的日志记录。当我不应该对IoC容器有任何依赖时,是不是对依赖于Windsor的项目产生了负面影响?

我明白了Windsor拥有日志设施的意义,因此它可以使用项目想要使用的任何日志框架来记录自己的操作。这似乎是非常明智的。但是如果我不使用​​作为自己的代码,并且直接转到log4net的ILog,我放弃了什么?我会后悔吗?

明显的回应是我可能想在六个月内更改日志框架。但我不会。 log4net成熟稳定。这是一个具有有限和非常明确的范围的项目,它几乎完美实现。它可以被认为是“完成”。至多,我可能需要编写一个自定义appender来处理消息。 (也许我想把它们写在明信片上,出于某种原因放在邮件中。)但是这很容易在log4net框架内完成,我会像使用其他log4net appender一样使用它。我不太可能改变日志框架,而不是改变网络平台。

回答

0

看起来好像您已经决定直接使用log4net。这是非常合理的,因为你认为它是一个稳定的依赖。我刚刚从我们的项目的log4net切换到NLog,所以它确实会发生,你可能会在将来改变日志框架,这是抽象有其优势的地方。

考虑使用日志抽象(除了丢失特定于特定日志框架的功能之外)时的另一考虑是学习抽象的额外开销。这是否使得代码对于开发者来说或多或少是复杂的?我们发现NLog很容易直接安装和配置,我们决定失去自定义日志抽象,并从log4net(我们发现它在xml配置中与NLog相比有点冗长)中切换。

+0

我需要一点验证! – 2012-02-15 16:23:15