private void InitializeEventTrace(ConfigurationSection configSection, bool firstTimeInitialization) { SettingsConfigReader configReader = new SettingsConfigReader(configSection); string level = configReader.ReadTraceLevelKey(); string keywords = configReader.ReadKeywordsKey(); string includeEventList = configReader.ReadIncludeEventKey(); string excludeEventList = configReader.ReadExcludeEventKey(); TraceSinkFilter traceSinkFilter = new TraceSinkFilter(DefaultTracingLevel, DefaultKeyword); traceSinkFilter.Level = string.IsNullOrEmpty(level) ? DefaultTracingLevel : this.ConvertLevel(int.Parse(level)); traceSinkFilter.Keywords = string.IsNullOrEmpty(keywords) ? DefaultKeyword : (EventKeywords)Convert.ToUInt64(keywords, 16); if (!string.IsNullOrEmpty(includeEventList)) { this.ProcessEventList(traceSinkFilter, includeEventList, TraceSinkFilter.FilterType.Include); } if (!string.IsNullOrEmpty(excludeEventList)) { this.ProcessEventList(traceSinkFilter, excludeEventList, TraceSinkFilter.FilterType.Exclude); } if (firstTimeInitialization) { // Assign sinkFilter for first time initialization only if any OnConfigurationPackageModified callbacks haven't modified it already Interlocked.CompareExchange(ref this.sinkFilter, traceSinkFilter, null); } else { this.sinkFilter = traceSinkFilter; } this.OnFilterUpdate(); }
private void ProcessEventList(TraceSinkFilter traceSinkFilter, string eventList, TraceSinkFilter.FilterType filterType) { var events = eventList.Split(this.filterValueSeparatorArray, System.StringSplitOptions.RemoveEmptyEntries); foreach (var e in events) { traceSinkFilter.AddFilter(e, filterType); } }