You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by rg...@apache.org on 2008/05/07 03:37:21 UTC
svn commit: r653963 - in /logging/log4net/trunk:
src/Config/BasicConfigurator.cs src/Repository/Hierarchy/Hierarchy.cs
src/Repository/IBasicRepositoryConfigurator.cs
tests/src/Hierarchy/Hierarchy.cs
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);
+ }
}
}