如何使用/启用EventHubClient的EventHubsEventSource跟踪

问题描述

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

解决方法

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

这看起来像:

protected override void OnEventSourceCreated(EventSource eventSource)
{
    base.OnEventSourceCreated(eventSource);

    if (eventSource.Name == "Microsoft-Azure-EventHubs")
    {
        EnableEvents(eventSource,EventLevel.Verbose);
    }
}

编辑: 以下内容基于对问题的错误理解,适用于当前的Event Hubs客户端库Azure.Messaging.EventHubs。这些语句对于旧的客户端库Microsoft.Azure.EventHubs并不适用。我暂时不做任何改动,因为某些读者可能会对它感兴趣。

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

最简单的方法是利用AzureEventSourceListener库中的Azure.Coresample演示了一些使用它的方法。另外,源代码中的OnEventSourceCreated方法说明了如何将特征集成到自己的侦听器中。