gpt4 book ai didi

.net - 没有日志库的日志记录

转载 作者:行者123 更新时间:2023-12-04 17:40:20 24 4
gpt4 key购买 nike

这里是“问题”。我开发的每个库都记录了一些东西,但是我不想要求库用户知道这一点并安装 log4net 或我将使用的类似日志记录实现。聪明人如何创建独立程序集?

记录输出对于库用户并不重要,除非他或她真的想查看调试/信息输出。在这种情况下,他将安装 log4net 并通过配置文件告诉库以某种方式使用它。否则,我想在没有任何不相关的依赖项的情况下发布我的库。这可能吗?有什么选择?

在 C++ 中,我会简单地创建几个 dll/so(有和没有日志记录)将它们与所需的库集静态链接,如果有人需要启用日志记录的库,他会简单地用另一个版本覆盖它。

最佳答案

绝妙的主意;这些细节让图书馆的作者和消费者的生活更轻松!

DotNetOpenAuth 执行此操作

我知道 DotNetOpenAuth 库的行为方式与您描述的一样。它使用 log4net,但前提是它存在并由消费程序集配置。从它的 README.Bin.html :

log4net.dll If present and v1.2.10, will allow for recording log messages this library emits.



还有 an informative page on how to configure DotNetOpenAuth logging在您自己的应用程序中。

[编辑]
我检查了他们的源代码,他们动态检查 log4net 程序集并加载+连接它(如果存在)(在 Log4NetLogger.cs 和 Logger.cs 中)。正如您在下面的评论中所提到的,他们在编译期间需要 log4net,因为它在多个地方被引用。聪明的部分是 因为检查失败时会跳过所有 log4net 特定的代码,所以在缺少 log4net 程序集时不会出现运行时问题 .

DotNetOpenAuth 是一个开源项目,因此您应该能够通过浏览他们的初始化代码来模仿他们的方法。

关于.net - 没有日志库的日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560125/

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