Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
C# 我可以使用EventLog或EventSource进行日志记录和跟踪吗?_C#_Logging_Trace_Etw - Fatal编程技术网

C# 我可以使用EventLog或EventSource进行日志记录和跟踪吗?

C# 我可以使用EventLog或EventSource进行日志记录和跟踪吗?,c#,logging,trace,etw,C#,Logging,Trace,Etw,我正在尝试创建一个简化的API,用于记录错误、警告、信息以及跟踪调试、分析Windows事件日志,以便使用Windows事件查看器处理日志。我找到了EventLog类并开始对其进行编码,它可以用于记录到应用程序日志。但是,我找不到任何关于使用此类指定的文档。我需要将跟踪信息推送到分析和调试日志中,并且我希望让应用程序选择记录的事件是转到管理日志还是操作日志中 然后我了解了EventSource类,MSDN上的各种博客表明它确实允许您指定日志记录通道,但我不知道该通道是否是日志子类别的另一个词 这

我正在尝试创建一个简化的API,用于记录错误、警告、信息以及跟踪调试、分析Windows事件日志,以便使用Windows事件查看器处理日志。我找到了EventLog类并开始对其进行编码,它可以用于记录到应用程序日志。但是,我找不到任何关于使用此类指定的文档。我需要将跟踪信息推送到分析和调试日志中,并且我希望让应用程序选择记录的事件是转到管理日志还是操作日志中

然后我了解了EventSource类,MSDN上的各种博客表明它确实允许您指定日志记录通道,但我不知道该通道是否是日志子类别的另一个词

这是我能找到的唯一一条比较这两个类的线索,它似乎没有回答我需要知道的问题:

我可以使用EventLog或EventSource记录到特定的to WEL子类别吗? 在.NET4.5框架中,是否推荐其中一个?i、 e.事件日志是否被视为已弃用,还是仅用于非跟踪用途?
是,您可以使用如图所示的EventLog或如图所示的EventSource和。我不知道有任何官方建议,但我认为使用EventSource编写强类型日志消息更容易。它还有更多的功能,如果你愿意的话,你甚至可以在.Net 3.5中使用它。

看起来我误解了这些日志中的帮助/TechNet信息。有Windows日志-应用程序安全、安装、系统、ForwardedEvents-还有自定义应用程序和服务日志。只有后者可以有子类型:Admin、Operational、analysis、Debug。Windows日志没有子类型,它们只用于记录而不是跟踪,因此它们不接受等同于调试或跟踪的日志级别


这就是说,EventLog类适合我的日志记录需求,但它似乎没有提供足够的功能来与ETW接口以进行跟踪。如果我想写有价值的跟踪日志,我必须使用ETW,而EventSource类更适合这样做。

您不需要API-它内置在.Net中。考虑TraceSurCE和EnviLogTraceListNER。您可以对消息类型应用过滤器,以便仅将“事件日志值”的消息发送到事件日志,并使用ETW和捕获瞬态调试数据。可以在运行时进行重新配置,以帮助调试。还有一个好处是.net框架内置了大量TraceSource


请参阅,有关为什么TraceSource是一个不错的选择的更多信息,我强烈建议使用现有的框架,如NLog,它可以写入许多不同的目标,包括事件日志,而不是重新发明轮子。我还强烈建议使用企业库日志记录之类的东西。它具有处理事件日志条目以及数据库日志和电子邮件通知的操作。假设我是用.NET语言编写应用程序的,那么上面的建议也很可靠。实际情况有点复杂:我正在为LabVIEW创建一个日志API,它可以从自己的运行时引擎调用.NET程序集。我希望使用框架原生的类,这样我的LabVIEW客户端就不必使用NuGet或类似工具下载.NET包。这排除了使用log4net、ELL等。