Beispiel #1
0
        public void NamedFactoryConstructorTest()
        {
            string       name    = string.Empty; // TODO: Initialize to an appropriate value
            ILogFactory  factory = null;         // TODO: Initialize to an appropriate value
            NamedFactory target  = new NamedFactory(name, factory);

            Assert.Inconclusive("TODO: Implement code to verify target");
        }
        /// <summary>
        /// Determines a factory which can create an
        /// <see cref="ILogger"/> instance based on a
        /// request for a named logger.
        /// </summary>
        /// <param name="loggerName">The logger name.</param>
        /// <returns>A factory which in turn is responsible for creating
        /// a given <see cref="ILogger"/> implementation.</returns>
        public ILoggerFactory GetFactory(string loggerName)
        {
            Ensure.ArgumentNotNull(loggerName, "loggerName");

            loggerName = loggerName.ToLower(CultureInfo.InvariantCulture);
            ILoggerFactory resolvedFactory;

            lock (lockObj)
            {
                if (_factoryCache.Count == 0)
                {
                    return(NullLoggerFactory.Instance);
                }

                // locate the first factory which matches the named logger
                NamedFactory namedFactory = _factoryCache.Find(
                    factory => loggerName.StartsWith(factory.Name.ToLower(CultureInfo.InvariantCulture)));


                if (namedFactory != null)
                {
                    resolvedFactory = namedFactory.Factory;
                }
                else
                {
                    // if there are no matches, use the default logger, i.e
                    // a logger with an empty name

                    // get the least specific factory
                    namedFactory = _factoryCache[_factoryCache.Count - 1];

                    if (namedFactory.Name == LoggerService.DefaultLoggerName)
                    {
                        // this is the default logger. so return the factory
                        resolvedFactory = namedFactory.Factory;
                    }
                    else
                    {
                        // the least specific factory is not a default factory, so
                        // we have no other option than to return a null logger factory
                        resolvedFactory = NullLoggerFactory.Instance;
                    }
                }
            }

            return(resolvedFactory);
        }
Beispiel #3
0
        /// <summary> Determines a factory which can create an <see cref="ILog" /> instance based on a request for a named logger. </summary>
        /// <param name="logName"> The log name. </param>
        /// <returns> A factory which in turn is responsible for creating a given <see cref="ILog" /> implementation. </returns>
        public ILogFactory GetFactory(string logName)
        {
            if (logName == null)
            {
                throw new ArgumentNullException("logName");
            }

            logName = logName.ToLower(CultureInfo.InvariantCulture);
            ILogFactory resolvedFactory;

            lock (lockObj)
            {
                if (factoryCache.Count == 0)
                {
                    return(NullLogFactory.Instance);
                }

                // locate the first factory which matches the named logger
                NamedFactory namedFactory = factoryCache.Find(factory => logName.StartsWith(factory.Name.ToLower(CultureInfo.InvariantCulture)));

                if (namedFactory != null)
                {
                    resolvedFactory = namedFactory.Factory;
                }
                else
                {
                    // if there are no matches, use the default log, i.e a log with an empty name

                    // get the least specific factory
                    namedFactory = factoryCache[factoryCache.Count - 1];

                    if (namedFactory.Name == LogManager.DefaultLogName)
                    {
                        // this is the default log. so return the factory
                        resolvedFactory = namedFactory.Factory;
                    }
                    else
                    {
                        // the least specific factory is not a default factory, so we have no other option than to return a null log factory
                        resolvedFactory = NullLogFactory.Instance;
                    }
                }
            }
            return(resolvedFactory);
        }
        /// <summary>
        /// Removes a previously registered factory from the resolver's internal cache.
        /// </summary>
        /// <param name="name">The name that was used to register the factory. Comparison
        /// is case insensitive.</param>
        /// <returns>True if a matching factory was found and removed.</returns>
        public bool DeregisterFactory(string name)
        {
            Ensure.ArgumentNotNull(name, "name");
            name = name.ToLower(CultureInfo.InvariantCulture);

            lock (lockObj)
            {
                // locate the first factory which matches the named logger
                NamedFactory namedFactory = _factoryCache.Find(factory => name == factory.Name.ToLower(CultureInfo.InvariantCulture));
                if (namedFactory != null)
                {
                    _factoryCache.Remove(namedFactory);
                    return(true);
                }
            }

            return(false);
        }
Beispiel #5
0
        /// <summary> Removes a previously registered factory from the resolver's internal cache. </summary>
        /// <param name="name"> The name that was used to register the factory. Comparison is case insensitive. </param>
        /// <returns> True if a matching factory was found and removed. </returns>
        public bool DeregisterFactory(string name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            name = name.ToLower(CultureInfo.InvariantCulture);

            lock (lockObj)
            {
                // locate the first factory which matches the named log
                NamedFactory namedFactory = factoryCache.Find(factory => name == factory.Name.ToLower(CultureInfo.InvariantCulture));
                if (namedFactory != null)
                {
                    factoryCache.Remove(namedFactory);
                    return(true);
                }
            }
            return(false);
        }