private bool TryCreateEventRequest(IConsole console, string providerString, out EnableEventsRequest request) { // Format: // provider[:level[:keywords]] var splat = providerString.Split(':'); var level = EventLevel.Informational; var keywords = EventKeywords.All; var provider = splat[0].Trim(); if (splat.Length > 1) { if (!Enum.TryParse(splat[1].Trim(), out level)) { console.Error.WriteLine($"Invalid event level '{splat[1]}'. Expected one of: {string.Join(", ", Enum.GetValues(typeof(EventLevel)))}"); request = null; return(false); } if (splat.Length > 2) { if (!TryParseKeywords(splat[2].Trim(), provider, out keywords)) { request = null; return(false); } } } request = new EnableEventsRequest(provider, level, keywords); return(true); }
public Task EnableLoggersAsync(IEnumerable <string> loggers) { var request = new EnableEventsRequest( provider: "Microsoft-Extensions-Logging", level: EventLevel.Verbose, keywords: (EventKeywords)2, arguments: new Dictionary <string, string>() { { "FilterSpecs", GenerateFilterSpec(loggers) } }); return(EnableEventsAsync(new EnableEventsRequest[] { request })); }
public void EnableEvents(EnableEventsRequest request) { lock (_lock) { if (_sources.TryGetValue(request.Provider, out var eventSource)) { // The source has already been created, just enable it EnableEvents(eventSource, request); } else { // The source has not yet been created, queue the request // TODO: Can't handle multiple requests for the same provider! _queuedRequests.Add(request.Provider, request); } } }
private void EnableEvents(EventSource eventSource, EnableEventsRequest request) { EnableEvents(eventSource, request.Level, request.Keywords); }