# HG changeset patch # User Dominik Psenner # Date 1338041275 -7200 # Node ID 2fafff5669aa14fed2830276972a54c30e531f9e # Parent d6e8c2e881275dec3b2242ca41fae9c3fe7b7d6c Do not search for parents if the string is shorter than 2 characters. LOG4NET-343 diff -r d6e8c2e88127 -r 2fafff5669aa src/Repository/Hierarchy/Hierarchy.cs --- a/src/Repository/Hierarchy/Hierarchy.cs Fri May 25 21:48:29 2012 +0200 +++ b/src/Repository/Hierarchy/Hierarchy.cs Sat May 26 16:07:55 2012 +0200 @@ -832,41 +832,44 @@ int length = name.Length; bool parentFound = false; - // if name = "w.x.y.z", loop through "w.x.y", "w.x" and "w", but not "w.x.y.z" - for(int i = name.LastIndexOf('.', length-1); i >= 0; i = name.LastIndexOf('.', i-1)) - { - string substr = name.Substring(0, i); - - LoggerKey key = new LoggerKey(substr); // simple constructor - Object node = m_ht[key]; - // Create a provision node for a future parent. - if (node == null) - { - ProvisionNode pn = new ProvisionNode(log); - m_ht[key] = pn; - } - else - { - Logger nodeLogger = node as Logger; - if (nodeLogger != null) - { - parentFound = true; - log.Parent = nodeLogger; - break; // no need to update the ancestors of the closest ancestor - } - else - { - ProvisionNode nodeProvisionNode = node as ProvisionNode; - if (nodeProvisionNode != null) - { - nodeProvisionNode.Add(log); - } - else - { - LogLog.Error(declaringType, "Unexpected object type ["+node.GetType()+"] in ht.", new LogException()); - } - } - } + // if name = "w.x.y.z", loop through "w.x.y", "w.x" and "w", but not "w.x.y.z" + if (length > 1) + { + for (int i = name.LastIndexOf('.', length - 1); i >= 0; i = name.LastIndexOf('.', i - 1)) + { + string substr = name.Substring(0, i); + + LoggerKey key = new LoggerKey(substr); // simple constructor + Object node = m_ht[key]; + // Create a provision node for a future parent. + if (node == null) + { + ProvisionNode pn = new ProvisionNode(log); + m_ht[key] = pn; + } + else + { + Logger nodeLogger = node as Logger; + if (nodeLogger != null) + { + parentFound = true; + log.Parent = nodeLogger; + break; // no need to update the ancestors of the closest ancestor + } + else + { + ProvisionNode nodeProvisionNode = node as ProvisionNode; + if (nodeProvisionNode != null) + { + nodeProvisionNode.Add(log); + } + else + { + LogLog.Error(declaringType, "Unexpected object type [" + node.GetType() + "] in ht.", new LogException()); + } + } + } + } } // If we could not find any existing parents, then link with root.