private (MessageLogger[] MessageLoggers, ScopeLogger[]? ScopeLoggers) ApplyFilters(LoggerInformation[] loggers) { var messageLoggers = new List <MessageLogger>(); List <ScopeLogger>?scopeLoggers = _filterOptions.CaptureScopes ? new List <ScopeLogger>() : null; foreach (LoggerInformation loggerInformation in loggers) { LoggerRuleSelector.Select(_filterOptions, loggerInformation.ProviderType, loggerInformation.Category, out LogLevel? minLevel, out Func <string?, string?, LogLevel, bool>?filter); if (minLevel is not null and > LogLevel.Critical) { continue; } messageLoggers.Add(new MessageLogger(loggerInformation.Logger, loggerInformation.Category, loggerInformation.ProviderType.FullName, minLevel, filter)); if (!loggerInformation.ExternalScope) { scopeLoggers?.Add(new ScopeLogger(logger: loggerInformation.Logger, externalScopeProvider: null)); } } if (_scopeProvider != null) { scopeLoggers?.Add(new ScopeLogger(logger: null, externalScopeProvider: _scopeProvider)); } return(messageLoggers.ToArray(), scopeLoggers?.ToArray()); }
private void ApplyRules(LoggerInformation[] loggers, string categoryName, int start, int count) { for (var index = start; index < start + count; index++) { ref var loggerInformation = ref loggers[index]; RuleSelector.Select(_filterOptions, loggerInformation.ProviderType, categoryName, out var minLevel, out var filter); loggerInformation.Category = categoryName; loggerInformation.MinLevel = minLevel; loggerInformation.Filter = filter; }