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);
        }
Exemple #2
0
        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);
 }