【问题标题】:Exposing ILogger in a loosely coupled fashion以松耦合的方式暴露 ILogger
【发布时间】:2014-03-01 15:46:57
【问题描述】:

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

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

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

另一方面,如果我能够以某种方式将日志记录事件公开给消费应用程序(无论如何它是负责记录日志的应用程序),而包装器对其消费者是不可知的。

关于如何实现这一点的任何想法?

【问题讨论】:

  • 为什么会有人反对这个问题?态度很好,伙计们。

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


【解决方案1】:

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

LogManager.LogFactory = new Log4NetFactory(true);

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

【讨论】:

    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多