gpt4 book ai didi

.net - 登录 API

转载 作者:行者123 更新时间:2023-12-04 07:30:20 26 4
gpt4 key购买 nike

当我编写 API 程序集供其他人使用时,拥有一些日志记录功能来帮助诊断客户使用它的问题会很有用。

但是,例如,如果我在我的程序集中引用 log4net,这可能会与客户端应用程序使用的 log4net 版本发生冲突。

我不想通过编写自己的日志框架来重新发明轮子。

解决我的困境的最佳方法是什么?

编辑:我想我可以要求将我正在使用的特定版本的 log4net 安装到 GAC 中以避免与客户端的版本冲突,但这会使 API 成为一个需要安装而不是插入程序集的胖东西。

最佳答案

看看如何SpringFramework解决了这个问题。它使用 Common.Logging,然后可以通过配置文件将其映射到 log4net 或任何其他自定义日志记录框架。您可以在 Common.Logging website 上找到更多详细信息但基本上你会做以下事情:

  • 引用 Common.Logging 在你的类中使用它就像 log4net
  • 您的框架的使用者将配置 Common.Logging 以使用 log4net,如下所示:

  •   <configSections>
    <sectionGroup name="common">
    <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>

    <common>
    <logging>
    <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
    <arg key="configType" value="INLINE" />
    </factoryAdapter>
    </logging>
    </common>

    <log4net>
    .... normal log4net configuration goes here...
    </log4net>

    如果客户端也直接使用SpringFramework或者Common.Logging,冲突还是有可能的,但是几率大大降低,原因如下:
  • Common.Logging 团队正在努力确保 future 版本与过去版本的向后兼容性。例如,2.0 与 1.2 完全二进制兼容。
  • Common.Logging 更改频率低于 log4net,至少在理论上
  • 关于.net - 登录 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1104709/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com