在服务结构跟踪中设置 ETW 事件级别

Setting ETW event level in service fabric tracing

当您使用 visual studio 创建服务结构应用程序项目时,您将获得 EventSource 的实现(称为 ServiceEventSource)。例如,这里是方法实现之一:

    private const int ServiceRequestStopEventId = 6;
    [Event(ServiceRequestStopEventId, Level = EventLevel.Informational, Message = "Service request '{0}' finished", Keywords = Keywords.Requests)]
    public void ServiceRequestStop(string requestTypeName)
    {
        WriteEvent(ServiceRequestStopEventId, requestTypeName);
    }

如您所见,此方法具有设置了 Level 参数的 Event 属性。

  1. 我应该在哪里设置 Level 参数值?
  2. 我认为设置此级别的参数值将显示生成了多少输​​出。我说得对吗?
  3. 我可以在 运行 时随意动态修改这个 Level 参数值吗?

该代码仅指示有关它生成的 ETW 事件的信息。设置级别指示事件将被放置在哪个类别中。它不配置事件是否输出。记录工具决定是否记录。您通常可以在 运行 时间在日志记录工具中更改该级别。

一些有用的链接:

  1. 配置 WAD: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-diagnostics-how-to-setup-wad/

  2. 使用弹性搜索 https://azure.microsoft.com/en-us/documentation/articles/service-fabric-diagnostic-how-to-use-elasticsearch/

  3. 使用 OMS 分析事件。 https://azure.microsoft.com/en-us/documentation/articles/log-analytics-service-fabric/

  4. 使用服务分析器(演员) https://www.azureserviceprofiler.com/

  1. 您只能在 Event 属性中设置 Level
  2. 生成的输出量取决于日志的使用者。如果没有消费者或侦听器,则不会在任何级别生成事件。我们可以说级别取决于输出量,但前提是有此类事件的消费者。
  3. 不,您不能动态修改关卡。为此,您可以使用两个具有相同签名和不同级别的方法。

您可以找到有关 ETW 及其配置的所有有趣信息here