2015-07-06 6 views
4

Я пытаюсь выяснить, как последний аргумент (IDictionary<String, String>) в методе EventListener.EnableEvents(EventSource, EventLevel, EventKeywords, IDictionary<String, String>) влияет на поведение метода.Какова цель последнего аргумента типа `IDictionary <String, String>` в методе `EventListener.EnableEvents`?

Я проверил MSDN documentation, но описание не ясное и нет примера, как его использовать. Каковы аргументы события и как они указаны в словаре? Если кто-то может привести пример, это будет более чем идеально.

+1

Документов вы связываете сказать «Включают события для указанного источника события, которое имеет ... и аргументы соответствия». Остается вопрос: каковы аргументы события и как они указаны в словаре? –

ответ

1

Ближайший я нашел для ответа this article on MSDN.

Вы регистрируете события из приложения, а также хотите захватывать события из источников событий, которые не определены в приложении, но имеют отношение к приложению. Например, вы хотите захватить событие RequestStarted, поднятое ASP.NET, когда запрос будет получен вашим приложением. Тем не менее, вы не хотите собирать все эти события, потому что том, созданный этими дополнительными источниками, подавит ваше хранилище журналов или затруднит анализ информации о регистрации. Чтобы решить эту проблему, вам нужно собрать только образец событий, а не всех из них, а также иметь возможность фильтровать процессы, из которых вы собираете события.

2

IDictionary<String, String> в EventListener.EnableEvents являются аргументами команды и передаются в EventSource. В основном это механизм расширяемости, встроенный в EventSource. Например, пользовательский источник событий может переопределить OnEventCommand и ответить на произвольные команды.

Аргументы команды, которые в настоящее время поддерживаются System.Diagnostics.Tracing.EventSource, являются «ActivitySamplingStartEvent», «ActivitySampling» и «EtwSessionKeyword».

Вот пример того, как они используются в Semantic Logging Application Block Sampling and filtering events статьи:

var listener = new ObservableEventListener(); 

listener.EnableEvents("MyCustomEventSource", 
     EventLevel.Informational, Keywords.None, 
     new Dictionary<string, string> { 
      { "ActivitySampling", "true" } 
     });