问题描述
我试图在 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.Core
。 sample演示了一些使用它的方法。另外,源代码中的OnEventSourceCreated
方法说明了如何将特征集成到自己的侦听器中。