Author: nicko
Date: Tue Mar  6 12:00:38 2007
New Revision: 515275

URL: http://svn.apache.org/viewvc?view=rev&rev=515275
Log:
Committed patch from LOG4NET-97: Make Hierarchy's ILoggerFactory aware of the 
repository's LevelMap.
This is a breaking change to ILoggerFactory, but is required to ensure that the 
factory is aware of the repository and therefore its LevelMap

Modified:
    logging/log4net/trunk/src/Repository/Hierarchy/DefaultLoggerFactory.cs
    logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs
    logging/log4net/trunk/src/Repository/Hierarchy/ILoggerFactory.cs

Modified: logging/log4net/trunk/src/Repository/Hierarchy/DefaultLoggerFactory.cs
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Repository/Hierarchy/DefaultLoggerFactory.cs?view=diff&rev=515275&r1=515274&r2=515275
==============================================================================
--- logging/log4net/trunk/src/Repository/Hierarchy/DefaultLoggerFactory.cs 
(original)
+++ logging/log4net/trunk/src/Repository/Hierarchy/DefaultLoggerFactory.cs Tue 
Mar  6 12:00:38 2007
@@ -17,8 +17,6 @@
 //
 #endregion
 
-using System;
-
 using log4net.Core;
 
 namespace log4net.Repository.Hierarchy
@@ -58,6 +56,7 @@
                /// <summary>
                /// Create a new <see cref="Logger" /> instance
                /// </summary>
+               /// <param name="repository">The <see cref="ILoggerRepository" 
/> that will own the <see cref="Logger" />.</param>
                /// <param name="name">The name of the <see cref="Logger" 
/>.</param>
                /// <returns>The <see cref="Logger" /> instance for the 
specified name.</returns>
                /// <remarks>
@@ -74,11 +73,11 @@
                /// must be returned.
                /// </para>
                /// </remarks>
-               public Logger CreateLogger(string name) 
+               public Logger CreateLogger(ILoggerRepository repository, string 
name) 
                {
                        if (name == null)
                        {
-                               return new RootLogger(Level.Debug);
+                               return new 
RootLogger(repository.LevelMap.LookupWithDefault(Level.Debug));
                        }
                        return new LoggerImpl(name);
                }

Modified: logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs?view=diff&rev=515275&r1=515274&r2=515275
==============================================================================
--- logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs (original)
+++ logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs Tue Mar  6 
12:00:38 2007
@@ -19,7 +19,6 @@
 
 using System;
 
-using log4net.ObjectRenderer;
 using log4net.Core;
 using log4net.Util;
 
@@ -240,7 +239,7 @@
                                                if (m_root == null)
                                                {
                                                        // Create the root 
logger
-                                                       Logger root = 
m_defaultFactory.CreateLogger(null);
+                                                       Logger root = 
m_defaultFactory.CreateLogger(this, null);
                                                        root.Hierarchy = this;
 
                                                        // Store root
@@ -426,8 +425,8 @@
                /// </remarks>
                override public void ResetConfiguration() 
                {
-                       Root.Level = Level.Debug;
-                       Threshold = Level.All;
+                       Root.Level = LevelMap.LookupWithDefault(Level.Debug);
+                       Threshold = LevelMap.LookupWithDefault(Level.All);
        
                        // the synchronization is needed to prevent hashtable 
surprises
                        lock(m_ht) 
@@ -487,7 +486,7 @@
                /// The list returned is unordered but does not contain 
duplicates.
                /// </para>
                /// </remarks>
-               override public log4net.Appender.IAppender[] GetAppenders()
+               override public Appender.IAppender[] GetAppenders()
                {
                        System.Collections.ArrayList appenderList = new 
System.Collections.ArrayList();
 
@@ -498,7 +497,7 @@
                                CollectAppenders(appenderList, logger);
                        }
 
-                       return 
(log4net.Appender.IAppender[])appenderList.ToArray(typeof(log4net.Appender.IAppender));
+                       return 
(Appender.IAppender[])appenderList.ToArray(typeof(Appender.IAppender));
                }
 
                #endregion Override Implementation of LoggerRepositorySkeleton
@@ -509,7 +508,7 @@
                /// </summary>
                /// <param name="appenderList"></param>
                /// <param name="appender"></param>
-               private static void 
CollectAppender(System.Collections.ArrayList appenderList, 
log4net.Appender.IAppender appender)
+               private static void 
CollectAppender(System.Collections.ArrayList appenderList, Appender.IAppender 
appender)
                {
                        if (!appenderList.Contains(appender))
                        {
@@ -530,7 +529,7 @@
                /// <param name="container"></param>
                private static void 
CollectAppenders(System.Collections.ArrayList appenderList, IAppenderAttachable 
container)
                {
-                       foreach(log4net.Appender.IAppender appender in 
container.Appenders)
+                       foreach(Appender.IAppender appender in 
container.Appenders)
                        {
                                CollectAppender(appenderList, appender);
                        }
@@ -542,7 +541,7 @@
                /// Initialize the log4net system using the specified appender
                /// </summary>
                /// <param name="appender">the appender to use to log all 
logging events</param>
-               void 
IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender appender)
+               void IBasicRepositoryConfigurator.Configure(Appender.IAppender 
appender)
                {
                        BasicRepositoryConfigure(appender);
                }
@@ -558,7 +557,7 @@
                /// on this object, but it is protected and therefore can be 
called by subclasses.
                /// </para>
                /// </remarks>
-               protected void 
BasicRepositoryConfigure(log4net.Appender.IAppender appender)
+               protected void BasicRepositoryConfigure(Appender.IAppender 
appender)
                {
                        Root.AddAppender(appender);
 
@@ -697,14 +696,15 @@
                        // Synchronize to prevent write conflicts. Read 
conflicts (in
                        // GetEffectiveLevel() method) are possible only if 
variable
                        // assignments are non-atomic.
-                       Logger logger;
-       
+
                        lock(m_ht) 
                        {
+                               Logger logger = null;
+
                                Object node = m_ht[key];
                                if (node == null) 
                                {
-                                       logger = factory.CreateLogger(name);
+                                       logger = factory.CreateLogger(this, 
name);
                                        logger.Hierarchy = this;
                                        m_ht[key] = logger;       
                                        UpdateParents(logger);
@@ -721,7 +721,7 @@
                                ProvisionNode nodeProvisionNode = node as 
ProvisionNode;
                                if (nodeProvisionNode != null) 
                                {
-                                       logger = factory.CreateLogger(name);
+                                       logger = factory.CreateLogger(this, 
name);
                                        logger.Hierarchy = this; 
                                        m_ht[key] = logger;
                                        UpdateChildren(nodeProvisionNode, 
logger);
@@ -868,7 +868,7 @@
                /// c's parent field to log.
                /// </para>
                /// </remarks>
-               private void UpdateChildren(ProvisionNode pn, Logger log) 
+               private static void UpdateChildren(ProvisionNode pn, Logger 
log) 
                {
                        for(int i = 0; i < pn.Count; i++) 
                        {

Modified: logging/log4net/trunk/src/Repository/Hierarchy/ILoggerFactory.cs
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Repository/Hierarchy/ILoggerFactory.cs?view=diff&rev=515275&r1=515274&r2=515275
==============================================================================
--- logging/log4net/trunk/src/Repository/Hierarchy/ILoggerFactory.cs (original)
+++ logging/log4net/trunk/src/Repository/Hierarchy/ILoggerFactory.cs Tue Mar  6 
12:00:38 2007
@@ -17,10 +17,6 @@
 //
 #endregion
 
-using System;
-
-using log4net;
-
 namespace log4net.Repository.Hierarchy
 {
        /// <summary>
@@ -46,6 +42,7 @@
                /// <summary>
                /// Create a new <see cref="Logger" /> instance
                /// </summary>
+               /// <param name="repository">The <see cref="ILoggerRepository" 
/> that will own the <see cref="Logger" />.</param>
                /// <param name="name">The name of the <see cref="Logger" 
/>.</param>
                /// <returns>The <see cref="Logger" /> instance for the 
specified name.</returns>
                /// <remarks>
@@ -62,6 +59,6 @@
                /// must be returned.
                /// </para>
                /// </remarks>
-               Logger CreateLogger(string name);
+               Logger CreateLogger(ILoggerRepository repository, string name);
        }
 }


Reply via email to