Какова цель последнего аргумента типа `IDictionary<String, String>` в методе `EventListener.EnableEvents`?
Я пытаюсь выяснить, как последний аргумент (IDictionary<String, String>
) в методе EventListener.EnableEvents(EventSource, EventLevel, EventKeywords, IDictionary<String, String>)
влияет на поведение метода.
Я проверил документацию MSDN, но описание не ясно, и нет примера, как его использовать. Каковы аргументы события и как они указаны в словаре? Если кто-то может привести пример, это было бы более чем идеально.
2 ответа
IDictionary<String, String>
в EventListener.EnableEvents являются аргументами команды и передаются в EventSource. По сути, это механизм расширяемости, встроенный в EventSource. Например, пользовательский источник событий может переопределять OnEventCommand и отвечать на произвольные команды.
Аргументы команды, поддерживаемые в настоящее время System.Diagnostics.Tracing.EventSource, представляют собой "ActivitySamplingStartEvent", "ActivitySampling" и "EtwSessionKeyword".
Вот пример их использования из статьи " Выборка и фильтрация событий блока приложений семантической регистрации":
var listener = new ObservableEventListener();
listener.EnableEvents("MyCustomEventSource",
EventLevel.Informational, Keywords.None,
new Dictionary<string, string> {
{ "ActivitySampling", "true" }
});
Наиболее близким к этому ответу я нашел эту статью в MSDN.
Вы регистрируете события из приложения, и вы также хотите захватывать события из источников событий, которые не определены в приложении, но имеют отношение к приложению. Например, вы хотите перехватить событие RequestStarted, вызванное ASP.NET, когда ваше приложение получает запрос. Однако вы не хотите собирать все эти события, потому что объем, сгенерированный этими дополнительными источниками, переполнит ваше хранилище журналов или затруднит анализ информации журналирования. Чтобы решить эту проблему, вам нужно собрать только выборку событий, а не все из них, а также иметь возможность фильтровать процессы, из которых вы собираете события.