【发布时间】:2010-01-29 00:49:52
【问题描述】:
简单的问题:见标题。我正在使用 .NET 3.5。
阐述: 我正在构建一个插件,该插件将在运行时加载到第 3 方应用程序中。主应用程序使用 log4net 作为其日志框架。但是,它不会公开根记录器,因此我们无法记录。 (我已经向上游开发者提出了这个问题,他们会在未来的版本中修复它,所以与此同时我需要想出一些别的东西)
系统的另一个限制是,当它收到通知它应该加载本地系统上不存在的插件时,它会从它连接到的服务器上拉下该插件(如果它存在于服务器上),但它只能拉下插件所在的程序集。这意味着插件不能部署任何外部程序集,也不能部署 .config 或任何其他文件。
这让我只剩下内置的 .NET 程序集和插件程序集中的所有内容。但是,我不想通过自己构建另一个日志框架来重新发明轮子,所以我想知道解决这个问题的最佳方法是什么。
我更喜欢记录到文件中,并且希望避免将内容转储到 Windows 事件日志中。
【问题讨论】:
-
" 它不会暴露根记录器" - 你不能只添加对 log4net.dll 的引用并自己直接访问根记录器吗?
-
我尝试创建自己的根记录器并尝试使用父应用程序但无济于事。 Log4net 只允许每个应用程序有一个根记录器,并且父应用程序已经在创建一个。如果他们的暴露在某个地方,我可以使用它,但事实并非如此。我不确定是每个应用程序一个根记录器还是每个 AppDomain 一个根记录器。如果每个 AppDomain 一个,我可以尝试从我的插件创建自己的 AppDomain,然后创建自己的根记录器。