2010-01-29 58 views
5

简单的问题:看标题。我使用.NET 3.5。在.NET中是否有内置的日志记录框架?

详述: 我正在构建一个插件,它将在运行时加载到第三方应用程序中。主应用程序使用log4net作为其日志框架。但是,它不公开根记录器,所以我们无法登录。 (我已经向上游开发者提出了这个问题,他们将在未来发布的版本中修复此问题,因此在此期间我需要提供其他内容)

系统的另一个限制是当它收到通知它应该加载一个本地系统中不存在的插件,它将从它所连接的服务器上拉下该插件(如果它存在于服务器上),但它只能拉下插件所在的程序集。这意味着没有外部程序集,也没有.config或任何其他文件可以与插件部署。

这让我只有内置的.NET程序集和我的插件程序集中的所有东西。但是,我不想通过构建自己的另一个日志记录框架来重新发明轮子,所以我想知道这个问题的最佳方法是什么。

我宁愿记录到文件,也想避免将东西转储到Windows事件日志中。

+0

“它不公开根记录器” - 你不能只添加一个对log4net.dll的引用并直接访问根记录器吗? – Joe 2010-01-29 05:59:41

+1

我试着创建我自己的根记录器,并试图使用父应用程序'无济于事。 Log4net只允许每个应用程序使用一个根记录器,而父应用程序已经创建一个。如果他们暴露在某个地方,我可以使用它,但事实并非如此。 我不确定它是每个应用程序的一个根记录器还是每个AppDomain的一个。如果它是每个AppDomain的一个,我可以尝试从我的插件创建我自己的AppDomain,然后创建我自己的根记录器。 – alimbada 2010-01-29 18:53:12

回答

10

两个主要选择是在那里:

TraceDebug类它们是.NET框架(在System.Diagnostics命名空间内)的一部分可能是你最好的选择。这些提供了对各种运行时可配置监听器进行轻量级日志记录的工具,可以写入文件,事件日志和其他几个地方。

听起来你不能为你的应用程序添加额外的类,但是如果你可以的话,我建议你使用微软企业库,这是一个外部日志框架,它由微软提供,与.NET代码。

+0

我本来也在想企业图书馆,但是在确认我怀疑这是一家外部图书馆后,我停止了追求这种思路。 我现在会尝试跟踪和调试。干杯。 :) – alimbada 2010-01-29 01:07:24

-1

用于跟踪和调试的+1。您可能会要求上游开发人员实施TraceListener,将您的消息转发到Log4Net中,以便所有内容都将以单个文件形式存在。

他们也可能会考虑Gibraltar查看和分析log4net数据。事实上,如果上游开发商整合直布罗陀,它会自动合并log4net和Trace数据。

更新:我们已经使我们的日志查看器免费!

阅读我们的博客更多关于为什么our best log viewer is now FREE

或者访问我们的网站learn more或只是get the bits now!