Beispiel #1
0
 private static void CheckAllReferencedProviders(IEnumerable <LoggingProviderBase> referencedProviders,
                                                 LoggingProviderChain chain)
 {
     // Most of the time referenced providers are simply fallback providers.
     foreach (var provider in referencedProviders)
     {
         ValidateProvider(provider, chain);
     }
 }
Beispiel #2
0
        private static void ValidateProvider(LoggingProviderBase provider, LoggingProviderChain chain)
        {
            ThrowWhenProviderIsInChain(provider, chain);

            // Note that LoggingProviderChain is immutable. Adding involves creating a new instance.
            var chainWithProvider = chain.Add(provider);

            CheckAllReferencedProviders(provider.GetReferencedProviders(), chainWithProvider);
        }
Beispiel #3
0
        private static void ThrowWhenProviderIsInChain(LoggingProviderBase providerToValidate,
                                                       LoggingProviderChain providersInChain)
        {
            // Check whether the supplied provider is already directly or indirectly referencing itself.
            bool providerIsSelfReferenced = providersInChain.Contains(providerToValidate);

            if (providerIsSelfReferenced)
            {
                throw new ConfigurationErrorsException(
                          SR.CircularReferenceInLoggingSection(Logger.SectionName, providerToValidate.Name));
            }
        }
Beispiel #4
0
 private LoggingProviderChain(LoggingProviderBase provider, LoggingProviderChain list)
 {
     this.provider = provider;
     this.list     = list;
 }