【问题标题】:How to use/enable EventHubsEventSource traces for EventHubClient [closed]如何为 EventHubClient 使用/启用 EventHubsEventSource 跟踪 [关闭]
【发布时间】:2020-09-10 20:59:25
【问题描述】:

我正在尝试在 azure-event-hubs-dotnet/src/Microsoft.Azure.EventHubs/EventHubClient.cs 中启用 EventHubsEventSource 跟踪,例如在文件中跟踪它们的事件。 有人可以告诉我如何启用这些事件吗? 我尝试使用自定义 EventTraceListener 但类 EventHubsEventSource 被标记为内部,因此我的听众看不到。 感谢您的帮助。

【问题讨论】:

    标签: c# azure-eventhub


    【解决方案1】:

    事件源实现是内部的,但侦听器可以通过按名称选择源来使用。在你的监听器的OnEventSourceCreated中,你应该可以通过事件源的名字进行过滤。

    看起来像:

    protected override void OnEventSourceCreated(EventSource eventSource)
    {
        base.OnEventSourceCreated(eventSource);
    
        if (eventSource.Name == "Microsoft-Azure-EventHubs")
        {
            EnableEvents(eventSource, EventLevel.Verbose);
        }
    }
    

    编辑: 以下内容基于对问题的误读,适用于当前一代的事件中心客户端库Azure.Messaging.EventHubs。这些陈述不适用于遗留客户端库Microsoft.Azure.EventHubs,这是问题的主题。我将暂时保留它,因为它可能会引起一些读者的兴趣。

    事件源实现是内部的,但通过选择具有 AzureEventSource 特征的源可供侦听器使用。

    最简单的方法是使用Azure.Core 库中的AzureEventSourceListener。这个sample 演示了一些使用它的方法。或者,源代码中的 OnEventSourceCreated 方法说明了如何将 trait 集成到您自己的侦听器中。

    【讨论】:

    • 您好 Jesse,感谢您的回答,如果我理解正确,AzureEventSourceListener 正在启用具有 AzureEventSource 特征的 EventSource。纠正我如果我错了,但我没有看到 EventHubsEventSource 上的特征定义,我是不是错过了什么?
    • 你是对的。 Azure 客户端库中的所有事件源都使用该特征来更轻松地过滤它们。正在应用的 trait 有点微妙,因为它在 Core 库中被别名为常量并通过构造函数传递。你可以在这里看到它:github.com/Azure/azure-sdk-for-net/blob/master/sdk/eventhub/…
    • 您好,感谢您的回答,当我查看EventHubClient 的代码他正在使用位于 Microsoft.Azure.EventHubs 命名空间中的 EventHubsEventSource,这与 EventHubsEventSource 和我们没有相应的特质,我错了吗?可能不匹配?
    • 啊,抱歉;错误是我的一部分。您的问题清楚地表明您使用的是旧版 SDK,但我误读了。我的陈述涉及当前一代的事件中心库,不适用于 Microsoft.Azure.EventHubs。
    • 我已更新以解决您提出的实际问题。很抱歉造成混乱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多