【问题标题】:ETW custom Controller and Consumer (Provider using .net 4.5 EventSource)ETW 自定义控制器和消费者(使用 .net 4.5 EventSource 的提供者)
【发布时间】:2012-08-14 17:50:48
【问题描述】:

我一直在尝试在 .net 4.5 中使用 ETW。我有一个使用 EventSource 编写消息的小型示例应用程序,但是,我很难理解如何创建自己的 ETW 控制器和使用者应用程序。

我已使用 PerfView 启用并查看事件源是否正常工作,以及在同一程序集中添加 EventListner。现在我希望能够拥有自己的自定义“PerfView”来管理和查看实时跟踪。我只是不知道如何绑定到事件源。

【问题讨论】:

标签: .net-4.5 event-listener etw


【解决方案1】:

查看 PerfMonitor 和构建它的 TraceEvent 类。

PerfMonitor 是一个封装应用程序,它可以控制源并使用它们的输出,以便您了解事情是如何工作的,而 TraceEvent 会完成大部分繁重的工作,因此您可以将其包含在您的项目中。

PerfMonitor 和 TraceEvent 附带完整的源代码,它们在 Ms-PL 下获得许可。

PerfMonitor 概述: http://bcl.codeplex.com/wikipage?title=PerfMonitor

TraceEvent 概述: http://bcl.codeplex.com/wikipage?title=TraceEvent

【讨论】:

    【解决方案2】:

    我建议使用Tx (LINQ to logs and traces) library

    还有专用的LINQpad driver 可用,因此您可以对真实 ETW 会话的 ETL 文件编写历史查询或常规查询,并立即在 LINQpad 中查看结果,甚至无需编写真实代码。

    【讨论】:

      【解决方案3】:

      2020 年你可以使用Microsoft.Diagnostics.Tracing.TraceEvent 创建一个简单的监听器。示例:

      class Program
      {
          static void Main(string[] args)
          {
              var sessionName = Guid.NewGuid().ToString();
              using (var session = new
                  Microsoft.Diagnostics.Tracing.Session.TraceEventSession(sessionName))
              {
                  // press CTRL-C to quit
                  Console.CancelKeyPress += (sender, e) => session.Stop();
      
                  session.Source.Dynamic.All += data =>
                  {
                      var line = $"{data}\n";
                      Console.WriteLine(line);
                  };
      
                  var providerGuid = Microsoft.Diagnostics.Tracing.Session.TraceEventProviders.GetEventSourceGuidFromName
                      ("MyCompany-MyApp-MyEventSource1");
                  session.EnableProvider(providerGuid);
      
                  session.Source.Process();
              }
          }
      }
      

      更多信息请访问The TraceEvent Library Programmers Guide

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-09
        • 2013-07-07
        • 1970-01-01
        • 2015-09-24
        • 1970-01-01
        • 1970-01-01
        • 2011-04-05
        相关资源
        最近更新 更多