【发布时间】:2011-04-06 00:17:53
【问题描述】:
这里是“问题”。我开发的每个库都会记录一些内容,但是我不想要求库用户知道这一点并安装 log4net 或我将使用的类似日志记录实现。聪明人是如何创建独立程序集的?
日志输出对于库用户来说并不重要,除非他或她真的想查看调试/信息输出。在这种情况下,他将安装 log4net 并通过配置文件告诉库以某种方式使用它。否则,我想在没有任何不相关依赖项的情况下运送我的库。这可能吗?有哪些选择?
在 C++ 中,我会简单地创建几个 dll/so(带和不带日志记录)将它们与所需的库集静态链接,如果有人需要启用日志记录的库,他只需用另一个版本覆盖它。
【问题讨论】:
-
那么您在内部使用 log4net 吗?为什么不允许用户指定他/她想要使用的日志记录方法?
-
是的,它确实隐含地引用了它。一般来说,我使用自己的抽象日志接口。所以也许我可以动态加载一个合适的日志库,比如 log4net。同样,我需要在我开发的所有库之间共享 ILog 接口,所以我必须至少发布 MyLibrary.dll + MyCompany.Logging.dll :(
标签: .net architecture logging