public void Select(LoggerFilterOptions options, Type providerType, string category, out LogType logType, out LogLevel?minLevel, out int traceCount, out Func <string, string, LogLevel, bool> filter)
        {
            filter     = null;
            minLevel   = new Microsoft.Extensions.Logging.LogLevel?(options.MinLevel);
            logType    = options.MiniType;
            traceCount = options.TraceCount;
            string           providerAlias = LoggerProviderAliasUtilities.GetAlias(providerType);
            LoggerFilterRule current       = null;

            foreach (LoggerFilterRule loggerFilterRule in options.Rules)
            {
                LoggerFilterRule rule = (LoggerFilterRule)loggerFilterRule;
                bool             flag = LoggerRuleSelector.IsBetter(rule, current, providerType.FullName, category) || (!string.IsNullOrEmpty(providerAlias) && LoggerRuleSelector.IsBetter(rule, current, providerAlias, category));
                if (flag)
                {
                    current = rule;
                }
            }
            bool flag2 = current != null;

            if (flag2)
            {
                filter     = current.Filter;
                minLevel   = current.LogLevel;
                logType    = current.LogType;
                traceCount = current.TraceCount;
            }
        }