Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net NET中是否有内置的日志框架?_.net_Logging_Log4net - Fatal编程技术网

.net NET中是否有内置的日志框架?

.net NET中是否有内置的日志框架?,.net,logging,log4net,.net,Logging,Log4net,简单问题:见标题。我正在使用.NET3.5 阐述: 我正在构建一个插件,它将在运行时加载到第三方应用程序中。主应用程序使用log4net作为其日志框架。但是,它没有公开根记录器,因此我们无法登录。(我已经向上游开发人员提出了这个问题,他们将在将来的版本中解决这个问题,所以在此期间,我需要提出一些其他的建议) 该系统的另一个限制是,当它收到应加载本地系统上不存在的插件的通知时,它将从连接到的服务器(如果该插件存在于服务器上)上下拉该插件,但它只能下拉插件所在的程序集。这意味着插件不能部署任何外部程

简单问题:见标题。我正在使用.NET3.5

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

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

这使得我只有内置的.NET程序集和插件程序集中的所有内容。然而,我不想通过构建另一个日志框架来重新发明轮子,所以我想知道解决这个问题的最佳方法是什么


我更喜欢将日志记录到文件中,并希望避免将内容转储到Windows事件日志中。

有两个主要选项:

Trace
Debug
类是.NET framework的一部分(在
System.Diagnostics
命名空间中),它们可能是您最好的选择。这些工具提供了对各种运行时可配置侦听器进行轻量级日志记录的工具,这些侦听器可以写入文件、事件日志和其他几个位置


听起来您无法向应用程序中添加任何额外的类,但如果可以的话,我建议您使用Microsoft Enterprise Library,它虽然是一个外部日志框架,但由Microsoft提供,并且倾向于很好地使用.NET代码。

您可以看看。它是一个围绕日志框架的门面,如log4net和LAB。

我原本也在考虑企业库,但在确认了我的怀疑是外部库之后,我停止了这一思路。现在我将尝试跟踪和调试。干杯。:)“它不公开根日志记录器”-你不能添加对log4net.dll的引用并自己直接访问根日志记录器吗?我已经尝试创建自己的根日志记录器并尝试使用父应用程序,但没有任何效果。Log4net只允许每个应用程序使用一个根记录器,并且父应用程序已经在创建一个根记录器。如果他们被暴露在某处,我可以使用它,但事实并非如此。我不确定是每个应用程序一个根记录器还是每个应用域一个根记录器。如果每个AppDomain一个,我可以尝试从插件创建自己的AppDomain,然后创建自己的根记录器。