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

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

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

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

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

  • 是的,您可以使用此处显示的EventLog或EventSource,如此处和此处所示。 我知道没有官方建议,但在我看来,使用EventSource编写强类型日志消息更容易。 它也有更多的功能,如果你愿意的话,你甚至可以使用它.Net 3.5。


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

    这就是说,Eve​​ntLog类适合我的日志记录需求,但它似乎没有提供足够的功能与ETW进行跟踪接口。 如果我想写入可跟踪值的日志,那么我将不得不使用ETW,并且EventSource类更适合这种情况。


    您不需要API - 它内置于.Net。 考虑TraceSourceEventLogTraceListener 。 您可以将过滤器应用于消息类型,以仅将那些'事件日志值得'的消息发送到事件日志,并使用ETW和自定义跟踪侦听器来捕获瞬态调试数据。 重新配置可以在运行时完成,以帮助进行调试。 还有一个好处 - 有很多TraceSources内置到.net框架中。

    看到这个SO回答,以及关于为什么TraceSource是一个好选择的更多博客文章

    链接地址: http://www.djcxy.com/p/90867.html

    上一篇: Can I use either EventLog or EventSource for both logging and tracing?

    下一篇: Warning C4538 when using System::Diagnostics::Tracing::EventSource on c++