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; } }