ETW,.NET 4.5 - 如何写事件日志?(ETW, .NET 4.5 - how to wr

2019-08-06 22:00发布

我想总结我的周围ETW头,以及如何与T集成到一个高性能的应用程序。

我们都知道老可怕的事件日志与它的非结构(因而不那么最优的)API。

现在有高性能跟踪新的和花哨的API - ETW,它在4.5中的EventSource类,您可以轻松地继承(所以没有更多的清单写)的形式得到了在.NET方面一个新的API。

这给我留下了许多问题,试图让这个工作。

  • 什么是当前最好的建议(根据文件,准则)的方式与ETW工作,并从那里得到事件到事件日志? 我这里有一个应用程序,必须编写(性能)活动,并喜欢使用ETW; 但事件应出现在(自定义)事件日志。
  • 对此有一个完整的例子吗? 我能找到一些,但他们都日到.NET 4.0的时间和清单开始。

我是怎么试试吗? 我得到了一个EventSource的工作,但根本就没有得到关于如何获得剩下的从那里工作的下游适当的文件。

Answer 1:

你所试图实现是不可能的,由于以下;

  • 如要直接ETW事件到事件日志,你需要在清单指定类型管理员,操作或一些经典的一次类似应用的通道,并使用wevtutil注册。 不幸的是你不能使用EventSource的这一点,即使你有一个清单,作为调用WriteEvent如您的活动从来没有标记为特定通道时,底层实现并不在EventDescriptor块上设置的通道字节。

  • EventSource的做什么幕后避免登记清单的繁琐的过程,它编译成Win32资源,将其链接到装配/ DLL,它注册等是从你的EventSource实现生成清单,并把它作为一个已知事件允许接收服务来分析,而不是依赖Windows基础架构,以获得清单信息的所有其他事件的有效载荷。 据我所知只有PerfView支持这个现在。



Answer 2:

在2013年8月, Microsoft.Diagnostics.Tracing.EventSource 1.0.4测试版发布的NuGet。 这三个大的胜利是渠道支持,静态(安装)清单的支持(进入事件查看器所需的两件事情)和.NET 4.0的支持。

据该博客文章宣布RTM,Microsoft.Diagnostics.Tracing.EventSource“实现了快速的应用程序追踪到Windows事件日志,包括生产”。



Answer 3:

有一个小的入门教程:

http://blogs.msdn.com/b/vancem/archive/2012/08/13/windows-high-speed-logging-etw-in-c-net-using-system-diagnostics-tracing-eventsource.aspx

http://blogs.msdn.com/b/vancem/archive/2012/07/09/logging-your-own-etw-events-in-c-system-diagnostics-tracing-eventsource.aspx

我还没有尝试过他们,因为我目前在.NET 4中工作,但也许这些链接帮助你...



Answer 4:

MSDN却不能解释它做好。 我希望#1会让我链接添加到Pluralsight讲座,与使用最佳实践理想的解释了所有的EventSource主题https://app.pluralsight.com/library/courses/event-tracing-windows-etw-dotnet/table-of-内容



Answer 5:

在“ 语义日志应用程序块 ”有EventListener的派生类,其中一个记录在事件日志中的例子。 它描述了对万斯的博客有点。



Answer 6:

这是非常有趣的,因为我一直在努力的类似要求关闭晚。 首先,你可以使用它的静态方法GenerateManifest(typeof运算(MyEvents),空)生成的EventSource类清单。 这将为您提供您的活动等方面的表现,但它不包含对渠道的细节。 您需要定义自己的渠道在清单中,然后用wevtutil.exe,mc.exe和RC.EXE公用事业登记。 这将创建你的事件日志按清单中的您的供应商名称。

有趣的是,我能设法得到调试和分析日志给我看通过的EventSource生成的事件。 我还可以使用性能监视器的跟踪会话记录一定时期对关键字和级别过滤器的事件。 提供程序出现在跟踪会话提供商名单。

我期待在目前的唯一的事情就是把在Admim和操作的通道的事件。 请喊,如果你需要样品等。

详细信息都存在AT- http://www.suneet.net/FrmBlogViewer.aspx?blogid=75



文章来源: ETW, .NET 4.5 - how to write to the event log?