我可以使用EventLog或EventSource进行日志记录和跟踪吗?
我正在尝试为日志记录(错误,警告,信息)和跟踪(调试,分析)创建一个简化的API到Windows事件日志,以便我可以使用Windows事件查看器处理日志。 我找到了EventLog类并开始对它进行编码,并且它用于记录到应用程序日志。 尽管如此,我找不到任何有关指定该类的日志子类别的文档。 我需要将跟踪信息推送到分析和调试日志,并且我想让应用程序选择记录的事件是否转到管理或操作日志。
然后我了解了EventSource类,并且MSDN上的各种博客表明它允许您指定日志记录“通道”,但我不知道该通道是否是日志子类别的另一个词。
这是我能找到的比较两个类的唯一线索,它似乎没有回答我需要知道的内容:
是的,您可以使用此处显示的EventLog或EventSource,如此处和此处所示。 我知道没有官方建议,但在我看来,使用EventSource编写强类型日志消息更容易。 它也有更多的功能,如果你愿意的话,你甚至可以使用它.Net 3.5。
看起来我误解了这些日志上的帮助/ TechNet信息。 有Windows日志 - 应用程序安全,设置,系统,ForwardedEvents - 然后有自定义的应用程序和服务日志。 只有后者可能有一个子类型:Admin,Operational,Analytic,Debug。 Windows日志没有子类型,仅用于日志记录(而不是跟踪),因此它们不接受等同于“调试”或“跟踪”的日志记录级别。
这就是说,EventLog类适合我的日志记录需求,但它似乎没有提供足够的功能与ETW进行跟踪接口。 如果我想写入可跟踪值的日志,那么我将不得不使用ETW,并且EventSource类更适合这种情况。
您不需要API - 它内置于.Net。 考虑TraceSource
和EventLogTraceListener
。 您可以将过滤器应用于消息类型,以仅将那些'事件日志值得'的消息发送到事件日志,并使用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++