nicko       2005/02/13 19:12:39

  Modified:    src/Config XmlConfigurator.cs
  Log:
  Added support for loading the configuration data via a URI
  
  Revision  Changes    Path
  1.13      +93 -1     logging-log4net/src/Config/XmlConfigurator.cs
  
  Index: XmlConfigurator.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Config/XmlConfigurator.cs,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- XmlConfigurator.cs        17 Jan 2005 20:18:42 -0000      1.12
  +++ XmlConfigurator.cs        14 Feb 2005 03:12:39 -0000      1.13
  @@ -22,6 +22,7 @@
   using System.IO;
   using System.Reflection;
   using System.Threading;
  +using System.Net;
   
   using log4net.Appender;
   using log4net.Util;
  @@ -306,7 +307,26 @@
                }
   
                /// <summary>
  -             /// Configures log4net using the specified configuration file.
  +             /// Configures log4net using the specified configuration URI.
  +             /// </summary>
  +             /// <param name="configUri">A URI to load the XML configuration 
from.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// The configuration data must be valid XML. It must contain
  +             /// at least one element called <c>log4net</c> that holds
  +             /// the log4net configuration data.
  +             /// </para>
  +             /// <para>
  +             /// The <see cref="System.Net.WebRequest"/> must support the 
URI scheme specified.
  +             /// </para>
  +             /// </remarks>
  +             static public void Configure(Uri configUri)
  +             {
  +                     
Configure(LogManager.GetRepository(Assembly.GetCallingAssembly()), configUri);
  +             }
  +
  +             /// <summary>
  +             /// Configures log4net using the specified configuration data 
stream.
                /// </summary>
                /// <param name="configStream">A stream to load the XML 
configuration from.</param>
                /// <remarks>
  @@ -474,6 +494,78 @@
                        }
                }
   
  +             /// <summary>
  +             /// Configures the <see cref="ILoggerRepository"/> using the 
specified configuration 
  +             /// URI.
  +             /// </summary>
  +             /// <param name="repository">The repository to 
configure.</param>
  +             /// <param name="configUri">A URI to load the XML configuration 
from.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// The configuration data must be valid XML. It must contain
  +             /// at least one element called <c>log4net</c> that holds
  +             /// the configuration data.
  +             /// </para>
  +             /// <para>
  +             /// The <see cref="System.Net.WebRequest"/> must support the 
URI scheme specified.
  +             /// </para>
  +             /// </remarks>
  +             static public void Configure(ILoggerRepository repository, Uri 
configUri)
  +             {
  +                     LogLog.Debug("XmlConfigurator: configuring repository 
[" + repository.Name + "] using URI ["+configUri+"]");
  +
  +                     if (configUri == null)
  +                     {
  +                             LogLog.Error("XmlConfigurator: Configure called 
with null 'configUri' parameter");
  +                     }
  +                     else
  +                     {
  +                             if (configUri.IsFile)
  +                             {
  +                                     // If URI is local file then call 
Configure with FileInfo
  +                                     Configure(repository, new 
FileInfo(configUri.LocalPath));
  +                             }
  +                             else
  +                             {
  +                                     WebRequest configRequest = null;
  +
  +                                     try
  +                                     {
  +                                             configRequest = 
WebRequest.Create(configUri);
  +                                     }
  +                                     catch(Exception ex)
  +                                     {
  +                                             LogLog.Error("XmlConfigurator: 
Failed to create WebRequest for URI ["+configUri+"]", ex);
  +                                     }
  +
  +                                     if (configRequest != null)
  +                                     {
  +                                             try
  +                                             {
  +                                                     WebResponse response = 
configRequest.GetResponse();
  +                                                     if (response != null)
  +                                                     {
  +                                                             try
  +                                                             {
  +                                                                     
using(Stream configStream = response.GetResponseStream())
  +                                                                     {
  +                                                                             
Configure(repository, configStream);
  +                                                                     }
  +                                                             }
  +                                                             finally
  +                                                             {
  +                                                                     
response.Close();
  +                                                             }
  +                                                     }
  +                                             }
  +                                             catch(Exception ex)
  +                                             {
  +                                                     
LogLog.Error("XmlConfigurator: Failed to request config from URI 
["+configUri+"]", ex);
  +                                             }
  +                                     }
  +                             }
  +                     }
  +             }
   
                /// <summary>
                /// Configures the <see cref="ILoggerRepository"/> using the 
specified configuration 
  
  
  

Reply via email to