Author: rgrabowski
Date: Tue May  6 18:37:20 2008
New Revision: 653963

URL: http://svn.apache.org/viewvc?rev=653963&view=rev
Log:
Fix for LOG4NET-153. Add overload to IBasicRepositoryConfigurator.Configure 
that accepts an array of IAppender objects instead of just a single IAppender.

Modified:
    logging/log4net/trunk/src/Config/BasicConfigurator.cs
    logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs
    logging/log4net/trunk/src/Repository/IBasicRepositoryConfigurator.cs
    logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs

Modified: logging/log4net/trunk/src/Config/BasicConfigurator.cs
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Config/BasicConfigurator.cs?rev=653963&r1=653962&r2=653963&view=diff
==============================================================================
--- logging/log4net/trunk/src/Config/BasicConfigurator.cs (original)
+++ logging/log4net/trunk/src/Config/BasicConfigurator.cs Tue May  6 18:37:20 
2008
@@ -110,19 +110,33 @@
                /// </remarks>
                static public ICollection Configure(IAppender appender) 
                {
+            return Configure(new IAppender[] { appender });
+               }
+
+        /// <summary>
+        /// Initializes the log4net system using the specified appenders.
+        /// </summary>
+        /// <param name="appenders">The appenders to use to log all logging 
events.</param>
+        /// <remarks>
+        /// <para>
+        /// Initializes the log4net system using the specified appenders.
+        /// </para>
+        /// </remarks>
+        static public ICollection Configure(params IAppender[] appenders)
+        {
             ArrayList configurationMessages = new ArrayList();
 
             ILoggerRepository repository = 
LogManager.GetRepository(Assembly.GetCallingAssembly());
 
             using (new LogLog.LogReceivedAdapter(configurationMessages))
             {
-                InternalConfigure(repository, appender);
+                InternalConfigure(repository, appenders);
             }
 
             repository.ConfigurationMessages = configurationMessages;
 
             return configurationMessages;
-               }
+        }
 
                /// <summary>
                /// Initializes the <see cref="ILoggerRepository"/> with a 
default configuration.
@@ -173,11 +187,26 @@
         /// </remarks>
         static public ICollection Configure(ILoggerRepository repository, 
IAppender appender)
         {
+            return Configure(repository, new IAppender[] { appender });
+        }
+
+        /// <summary>
+        /// Initializes the <see cref="ILoggerRepository"/> using the 
specified appenders.
+        /// </summary>
+        /// <param name="repository">The repository to configure.</param>
+        /// <param name="appenders">The appenders to use to log all logging 
events.</param>
+        /// <remarks>
+        /// <para>
+        /// Initializes the <see cref="ILoggerRepository"/> using the 
specified appender.
+        /// </para>
+        /// </remarks>
+        static public ICollection Configure(ILoggerRepository repository, 
params IAppender[] appenders)
+        {
             ArrayList configurationMessages = new ArrayList();
 
             using (new LogLog.LogReceivedAdapter(configurationMessages))
             {
-                InternalConfigure(repository, appender);
+                InternalConfigure(repository, appenders);
             }
 
             repository.ConfigurationMessages = configurationMessages;
@@ -185,12 +214,12 @@
             return configurationMessages;
         }
            
-               static private void InternalConfigure(ILoggerRepository 
repository, IAppender appender) 
+               static private void InternalConfigure(ILoggerRepository 
repository, params IAppender[] appenders) 
                {
             IBasicRepositoryConfigurator configurableRepository = repository 
as IBasicRepositoryConfigurator;
             if (configurableRepository != null)
             {
-                configurableRepository.Configure(appender);
+                configurableRepository.Configure(appenders);
             }
             else
             {

Modified: logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs?rev=653963&r1=653962&r2=653963&view=diff
==============================================================================
--- logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs (original)
+++ logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs Tue May  6 
18:37:20 2008
@@ -19,7 +19,9 @@
 
 using System;
 using System.Collections;
+using log4net.Appender;
 using log4net.Core;
+using log4net.Repository;
 using log4net.Util;
 
 namespace log4net.Repository.Hierarchy
@@ -545,29 +547,41 @@
                /// 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(Appender.IAppender 
appender)
+               void IBasicRepositoryConfigurator.Configure(IAppender appender)
                {
                        BasicRepositoryConfigure(appender);
                }
 
+        /// <summary>
+        /// Initialize the log4net system using the specified appenders
+        /// </summary>
+        /// <param name="appenders">the appenders to use to log all logging 
events</param>
+        void IBasicRepositoryConfigurator.Configure(params IAppender[] 
appenders)
+        {
+            BasicRepositoryConfigure(appenders);
+        }
+
                /// <summary>
-               /// Initialize the log4net system using the specified appender
+               /// Initialize the log4net system using the specified appenders
                /// </summary>
-               /// <param name="appender">the appender to use to log all 
logging events</param>
+               /// <param name="appenders">the appenders to use to log all 
logging events</param>
                /// <remarks>
                /// <para>
                /// This method provides the same functionality as the 
-               /// <see cref="IBasicRepositoryConfigurator.Configure"/> method 
implemented
+               /// <see 
cref="IBasicRepositoryConfigurator.Configure(IAppender)"/> method implemented
                /// on this object, but it is protected and therefore can be 
called by subclasses.
                /// </para>
                /// </remarks>
-               protected void BasicRepositoryConfigure(Appender.IAppender 
appender)
+               protected void BasicRepositoryConfigure(params IAppender[] 
appenders)
                {
             ArrayList configurationMessages = new ArrayList();
 
             using (new LogLog.LogReceivedAdapter(configurationMessages))
             {
-                Root.AddAppender(appender);
+                foreach (IAppender appender in appenders)
+                {
+                    Root.AddAppender(appender);
+                }
             }
 
                    Configured = true;
@@ -598,7 +612,7 @@
                /// <remarks>
                /// <para>
                /// This method provides the same functionality as the 
-               /// <see cref="IBasicRepositoryConfigurator.Configure"/> method 
implemented
+               /// <see 
cref="IBasicRepositoryConfigurator.Configure(IAppender)"/> method implemented
                /// on this object, but it is protected and therefore can be 
called by subclasses.
                /// </para>
                /// </remarks>

Modified: logging/log4net/trunk/src/Repository/IBasicRepositoryConfigurator.cs
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Repository/IBasicRepositoryConfigurator.cs?rev=653963&r1=653962&r2=653963&view=diff
==============================================================================
--- logging/log4net/trunk/src/Repository/IBasicRepositoryConfigurator.cs 
(original)
+++ logging/log4net/trunk/src/Repository/IBasicRepositoryConfigurator.cs Tue 
May  6 18:37:20 2008
@@ -17,10 +17,6 @@
 //
 #endregion
 
-using System;
-using System.Collections;
-using log4net.Util;
-
 namespace log4net.Repository
 {
        /// <summary>
@@ -50,6 +46,18 @@
                /// specified appender.
                /// </para>
                /// </remarks>
-        void Configure(log4net.Appender.IAppender appender);
+        void Configure(Appender.IAppender appender);
+
+        /// <summary>
+        /// Initialize the repository using the specified appenders
+        /// </summary>
+        /// <param name="appenders">the appenders to use to log all logging 
events</param>
+        /// <remarks>
+        /// <para>
+        /// Configure the repository to route all logging events to the
+        /// specified appenders.
+        /// </para>
+        /// </remarks>
+        void Configure(params Appender.IAppender[] appenders);
        }
 }

Modified: logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs?rev=653963&r1=653962&r2=653963&view=diff
==============================================================================
--- logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs (original)
+++ logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs Tue May  6 18:37:20 
2008
@@ -1,7 +1,10 @@
 using System;
 using System.Xml;
 using log4net.Config;
+using log4net.Core;
 using log4net.Repository;
+using log4net.Repository.Hierarchy;
+using log4net.Tests.Appender;
 using NUnit.Framework;
 
 namespace log4net.Tests.Hierarchy
@@ -35,5 +38,39 @@
             Assert.AreEqual("4", rep.Properties["two-plus-two"]);
             Assert.IsNull(rep.Properties["one-plus-one"]);
         }
+
+        [Test]
+        public void AddingMultipleAppenders()
+        {
+            CountingAppender alpha = new CountingAppender();
+            CountingAppender beta = new CountingAppender();
+
+            Repository.Hierarchy.Hierarchy hierarchy = 
+                (Repository.Hierarchy.Hierarchy)LogManager.GetRepository();
+            hierarchy.Root.AddAppender(alpha);
+            hierarchy.Root.AddAppender(beta);
+            hierarchy.Configured = true;
+
+            ILog log = LogManager.GetLogger(GetType());
+            log.Debug("Hello World");
+
+            Assert.AreEqual(1, alpha.Counter);
+            Assert.AreEqual(1, beta.Counter);
+        }
+
+        [Test]
+        public void AddingMultipleAppenders2()
+        {
+            CountingAppender alpha = new CountingAppender();
+            CountingAppender beta = new CountingAppender();
+            
+            BasicConfigurator.Configure(alpha, beta);
+
+            ILog log = LogManager.GetLogger(GetType());
+            log.Debug("Hello World");
+
+            Assert.AreEqual(1, alpha.Counter);
+            Assert.AreEqual(1, beta.Counter);
+        }
     }
 }


Reply via email to