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