以松散耦合的方式暴露ILogger

时间:2014-03-01 15:46:57

标签: c# logging open-source inversion-of-control log4net

我是第三方服务的C#开源包装器的作者。我需要公开一个ILogger工具(例如https://logging.apache.org/log4net/release/sdk/log4net.Core.ILogger.html)来记录特定的事件和错误。

我可以继续添加一个主要的记录器,如Log4Net,但我不希望将包装器绑定到特定的记录器。

我可以添加一个IoC容器,通过构造函数依赖注入轻松解决这个问题但是我再次不希望我的包装器绑定到任何特定的IoC。

另一方面,如果我能以某种方式将日志记录事件暴露给消费应用程序(无论如何都是负责记录的应用程序),并且包装器对其消费者是不可知的,那将是很好的。

有关如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:1)

项目通常会提供自己的抽象。捆绑了默认记录器,因此开箱即用,但您可以轻松配置日志记录提供程序,如ServiceStack loggingNServiceBus logging中所示。例如:

LogManager.LogFactory = new Log4NetFactory(true);

还有Common.Logging,旨在解决日志框架依赖性问题。但是,我还没有看到它在主要的开源项目中广泛使用,即使它已经存在了一段时间。