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

时间:2014-09-25 16:47:39

标签: c# logging tracing etw

我正在尝试为Windows事件日志创建一个简化的API,用于记录(错误,警告,信息)和跟踪(调试,分析),以便我可以使用Windows事件查看器来处理日志。我找到了EventLog类并开始编写它,它适用于记录到应用程序日志。但是,我找不到有关使用此类指定log subcategory的任何文档。我需要将跟踪信息推送到分析和调试日志,我想让应用程序选择记录的事件是否转到管理或操作日志。

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

This是我能找到比较这两个类的唯一线程,它似乎没有回答我需要知道的内容:

  1. 我可以使用EventLog或EventSource记录特定的WEL子类别吗?
  2. 在.NET 4.5框架中,其中一个是推荐的吗?即,是否将EventLog视为弃用,还是仅用于非跟踪使用?

3 个答案:

答案 0 :(得分:0)

是的,您可以使用显示here或EventSource的EventLog,如herehere所示。我知道没有官方推荐,但在我看来,使用EventSource编写强类型的日志消息更容易。它还具有更多功能,如果您愿意,可以使用this甚至可以将它与.Net 3.5一起使用。

答案 1 :(得分:0)

看起来我误解了这些日志上的帮助/ TechNet信息。有Windows日志 - 应用程序安全性,安装程序,系统,转发事件 - 然后有自定义应用程序和服务日志。只有后者可能有一个子类型:Admin,Operational,Analytic,Debug。 Windows日志没有子类型,并且它们仅用于记录(而不是跟踪),因此它们不接受等同于" Debug"的日志记录级别。或"追踪"。

话虽这么说,Eve​​ntLog类适合我对日志记录的需求,但它似乎没有提供足够的功能来与ETW进行交互以进行跟踪。如果我想写一些有关跟踪的日志,我将不得不使用ETW,并且EventSource类可以更好地配备它。

答案 2 :(得分:0)

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

请参阅this SO answerthis blog post了解有关TraceSource为何选择的更多信息