Exemple #1
0
        /// <summary>
        /// Creates a factory based on a given configuration.
        /// If the factory provides invalid information, an error is logged through
        /// the internal logger, and a <see cref="NOPLoggerFactory"/> returned.
        /// </summary>
        /// <param name="factoryConfiguration">The configuration that provides type
        /// information for the <see cref="ILoggerFactory"/> that is being created.</param>
        /// <returns>Factory instance.</returns>
        private ILoggerFactory CreateFactoryInstance(FactoryConfigurationElement factoryConfiguration)
        {
            ILoggerFactory             factory = ActivatorUtils.Instantiate <ILoggerFactory>(factoryConfiguration.Type);
            IConfigurableLoggerFactory cf      = factory as IConfigurableLoggerFactory;

            // If the factory is configurable, invoke its Init method
            if (cf != null)
            {
                cf.Init(factoryConfiguration.FactoryData);
            }
            else
            {
                if (!string.IsNullOrEmpty(factoryConfiguration.FactoryData))
                {
                    throw new ConfigurationErrorsException("Factory " + factoryConfiguration.Type + " does not implement IConfigurableLoggerFactory.");
                }
            }

            return(factory);
        }
        /// <summary>
        /// Creates a factory based on a given configuration.
        /// If the factory provides invalid information, an error is logged through
        /// the internal logger, and a <see cref="NullLoggerFactory"/> returned.
        /// </summary>
        /// <param name="factoryConfiguration">The configuration that provides type
        /// information for the <see cref="ILoggerFactory"/> that is being created.</param>
        /// <returns>Factory instance.</returns>
        private ILoggerFactory CreateFactoryInstance(FactoryConfigurationElement factoryConfiguration)
        {
            ILoggerFactory factory = ActivatorUtils.Instantiate <ILoggerFactory>(
                factoryConfiguration.Type, DiagnosticLogger);

            //if the factory is configurable, invoke its Init method
            IConfigurableLoggerFactory cf = factory as IConfigurableLoggerFactory;

            if (cf != null)
            {
                cf.Init(factoryConfiguration.FactoryData);
            }

            if (factory == null)
            {
                factory = NullLoggerFactory.Instance;
            }


            return(factory);
        }