logging-log4net-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ni...@apache.org
Subject cvs commit: logging-log4net/src/Core ErrorCode.cs IAppenderAttachable.cs IErrorHandler.cs IFixingRequired.cs ILogger.cs ILoggerWrapper.cs IOptionHandler.cs ITriggeringEventEvaluator.cs Level.cs LevelCollection.cs LevelEvaluator.cs LevelMap.cs LocationInfo.cs LogException.cs LogImpl.cs LoggerManager.cs LoggerWrapperImpl.cs LoggingEvent.cs SecurityContext.cs SecurityContextProvider.cs WrapperMap.cs
Date Mon, 06 Dec 2004 02:20:07 GMT
nicko       2004/12/05 18:20:07

  Modified:    src/Core ErrorCode.cs IAppenderAttachable.cs
                        IErrorHandler.cs IFixingRequired.cs ILogger.cs
                        ILoggerWrapper.cs IOptionHandler.cs
                        ITriggeringEventEvaluator.cs Level.cs
                        LevelCollection.cs LevelEvaluator.cs LevelMap.cs
                        LocationInfo.cs LogException.cs LogImpl.cs
                        LoggerManager.cs LoggerWrapperImpl.cs
                        LoggingEvent.cs SecurityContext.cs
                        SecurityContextProvider.cs WrapperMap.cs
  Log:
  Updated doc comments
  
  Revision  Changes    Path
  1.3       +5 -0      logging-log4net/src/Core/ErrorCode.cs
  
  Index: ErrorCode.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/ErrorCode.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ErrorCode.cs	16 Feb 2004 02:10:52 -0000	1.2
  +++ ErrorCode.cs	6 Dec 2004 02:20:06 -0000	1.3
  @@ -21,6 +21,11 @@
   	/// <summary>
   	/// Defined error codes that can be passed to the <see cref="IErrorHandler.Error"/> method.
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// Values passed to the <see cref="IErrorHandler.Error"/> method.
  +	/// </para>
  +	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public enum ErrorCode : int
   	{
  
  
  
  1.4       +37 -6     logging-log4net/src/Core/IAppenderAttachable.cs
  
  Index: IAppenderAttachable.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/IAppenderAttachable.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IAppenderAttachable.cs	26 Sep 2004 22:39:38 -0000	1.3
  +++ IAppenderAttachable.cs	6 Dec 2004 02:20:06 -0000	1.4
  @@ -25,6 +25,11 @@
   	/// <summary>
   	/// Interface for attaching appenders to objects.
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// Interface for attaching, removing and retrieving appenders.
  +	/// </para>
  +	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	/// <author>Gert Driesen</author>
   	public interface IAppenderAttachable
  @@ -32,16 +37,29 @@
   		/// <summary>
   		/// Attaches an appender.
   		/// </summary>
  -		/// <param name="newAppender">The appender to add.</param>
  -		void AddAppender(IAppender newAppender);
  +		/// <param name="appender">The appender to add.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Add the specified appender. The implementation may
  +		/// choose to allow or deny duplicate appenders.
  +		/// </para>
  +		/// </remarks>
  +		void AddAppender(IAppender appender);
   
   		/// <summary>
   		/// Gets all attached appenders.
   		/// </summary>
  -		/// <returns>
  -		/// A collection of attached appenders, or <c>null</c> if there
  -		/// are no attached appenders.
  -		/// </returns>
  +		/// <value>
  +		/// A collection of attached appenders.
  +		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets a collection of attached appenders.
  +		/// If there are no attached appenders the
  +		/// implementation should return an empty 
  +		/// collection rather than <c>null</c>.
  +		/// </para>
  +		/// </remarks>
   		AppenderCollection Appenders {get;}
   
   		/// <summary>
  @@ -52,13 +70,22 @@
   		/// The appender with the name specified, or <c>null</c> if no appender with the
   		/// specified name is found.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns an attached appender with the <paramref name="name"/> specified.
  +		/// If no appender with the specified name is found <c>null</c> will be
  +		/// returned.
  +		/// </para>
  +		/// </remarks>
   		IAppender GetAppender(string name);
   
   		/// <summary>
   		/// Removes all attached appenders.
   		/// </summary>
   		/// <remarks>
  +		/// <para>
   		/// Removes and closes all attached appenders
  +		/// </para>
   		/// </remarks>
   		void RemoveAllAppenders();
   
  @@ -68,9 +95,11 @@
   		/// <param name="appender">The appender to remove.</param>
   		/// <returns>The appender removed from the list</returns>
   		/// <remarks>
  +		/// <para>
   		/// The appender removed is not closed.
   		/// If you are discarding the appender you must call
   		/// <see cref="IAppender.Close"/> on the appender removed.
  +		/// </para>
   		/// </remarks>
   		IAppender RemoveAppender(IAppender appender);
   
  @@ -80,9 +109,11 @@
   		/// <param name="name">The name of the appender to remove.</param>
   		/// <returns>The appender removed from the list</returns>
   		/// <remarks>
  +		/// <para>
   		/// The appender removed is not closed.
   		/// If you are discarding the appender you must call
   		/// <see cref="IAppender.Close"/> on the appender removed.
  +		/// </para>
   		/// </remarks>
   		IAppender RemoveAppender(string name);   	
   	}
  
  
  
  1.3       +18 -0     logging-log4net/src/Core/IErrorHandler.cs
  
  Index: IErrorHandler.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/IErrorHandler.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- IErrorHandler.cs	16 Feb 2004 02:10:52 -0000	1.2
  +++ IErrorHandler.cs	6 Dec 2004 02:20:06 -0000	1.3
  @@ -24,8 +24,10 @@
   	/// Appenders may delegate their error handling to an <see cref="IErrorHandler" />.
   	/// </summary>
   	/// <remarks>
  +	/// <para>
   	/// Error handling is a particularly tedious to get right because by
   	/// definition errors are hard to predict and to reproduce. 
  +	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	/// <author>Gert Driesen</author>
  @@ -38,6 +40,12 @@
   		/// <param name="message">The message associated with the error.</param>
   		/// <param name="e">The <see cref="Exception" /> that was thrown when the error occurred.</param>
   		/// <param name="errorCode">The error code associated with the error.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Handles the error and information about the error condition is passed as 
  +		/// a parameter.
  +		/// </para>
  +		/// </remarks>
   		void Error(string message, Exception e, ErrorCode errorCode);
   
   		/// <summary>
  @@ -45,12 +53,22 @@
   		/// </summary>
   		/// <param name="message">The message associated with the error.</param>
   		/// <param name="e">The <see cref="Exception" /> that was thrown when the error occurred.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// See <see cref="Error(string,Exception,ErrorCode)"/>.
  +		/// </para>
  +		/// </remarks>
   		void Error(string message, Exception e);
   
   		/// <summary>
   		/// Prints the error message passed as a parameter.
   		/// </summary>
   		/// <param name="message">The message associated with the error.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// See <see cref="Error(string,Exception,ErrorCode)"/>.
  +		/// </para>
  +		/// </remarks>
   		void Error(string message);
   	}
   }
  
  
  
  1.2       +23 -2     logging-log4net/src/Core/IFixingRequired.cs
  
  Index: IFixingRequired.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/IFixingRequired.cs,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- IFixingRequired.cs	9 Sep 2004 21:53:13 -0000	1.1
  +++ IFixingRequired.cs	6 Dec 2004 02:20:06 -0000	1.2
  @@ -21,9 +21,23 @@
   namespace log4net.Core
   {
   	/// <summary>
  -	/// Interface that indicates that the object requires fixing before it
  -	/// can be taken outside the context of the appender's DoAppend method.
  +	/// Interface for objects that require fixing.
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// Interface that indicates that the object requires fixing before it
  +	/// can be taken outside the context of the appender's 
  +	/// <see cref="log4net.Appender.IAppender.DoAppend"/> method.
  +	/// </para>
  +	/// <para>
  +	/// When objects that implement this interface are stored 
  +	/// in the context properties maps <see cref="log4net.GlobalContext"/>
  +	/// <see cref="log4net.GlobalContext.Properties"/> and <see cref="log4net.ThreadContext"/>
  +	/// <see cref="log4net.ThreadContext.Properties"/> are fixed 
  +	/// (see <see cref="LoggingEvent.Fix"/>) the <see cref="GetFixedObject"/>
  +	/// method will be called.
  +	/// </para>
  +	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public interface IFixingRequired
   	{
  @@ -31,6 +45,13 @@
   		/// Get a portable version of this object
   		/// </summary>
   		/// <returns>the portable instance of this object</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Get a portable instance object that represents the current
  +		/// state of this object. The portable object can be stored
  +		/// and logged from any thread with identical results.
  +		/// </para>
  +		/// </remarks>
   		object GetFixedObject();
   	}
   }
  
  
  
  1.4       +34 -6     logging-log4net/src/Core/ILogger.cs
  
  Index: ILogger.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/ILogger.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ILogger.cs	19 Sep 2004 17:52:54 -0000	1.3
  +++ ILogger.cs	6 Dec 2004 02:20:06 -0000	1.4
  @@ -24,8 +24,14 @@
   namespace log4net.Core
   {
   	/// <summary>
  -	/// Interface that all loggers should implement.
  +	/// Interface that all loggers implement
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// This interface supports logging events and testing if a level
  +	/// is enabled for logging.
  +	/// </para>
  +	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	/// <author>Gert Driesen</author>
   	public interface ILogger
  @@ -36,6 +42,11 @@
   		/// <value>
   		/// The name of the logger.
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// The name of this logger
  +		/// </para>
  +		/// </remarks>
   		string Name { get; }
   
   		/// <summary>
  @@ -45,12 +56,14 @@
   		/// the stack boundary into the logging system for this call.</param>
   		/// <param name="level">The level of the message to be logged.</param>
   		/// <param name="message">The message object to log.</param>
  -		/// <param name="t">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param>
  +		/// <param name="exception">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param>
   		/// <remarks>
  +		/// <para>
   		/// Generates a logging event for the specified <paramref name="level"/> using
  -		/// the <paramref name="message"/> and <paramref name="t"/>.
  +		/// the <paramref name="message"/> and <paramref name="exception"/>.
  +		/// </para>
   		/// </remarks>
  -		void Log(Type callerStackBoundaryDeclaringType, Level level, object message, Exception t);
  +		void Log(Type callerStackBoundaryDeclaringType, Level level, object message, Exception exception);
     
   		/// <summary>
   		/// This is the most generic printing method that is intended to be used 
  @@ -58,7 +71,9 @@
   		/// </summary>
   		/// <param name="logEvent">The event being logged.</param>
   		/// <remarks>
  -		/// Logs the specified logging event.
  +		/// <para>
  +		/// Logs the specified logging event through this logger.
  +		/// </para>
   		/// </remarks>
   		void Log(LoggingEvent logEvent);
   
  @@ -69,13 +84,26 @@
   		/// <returns>
   		/// <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Test if this logger is going to log events of the specified <paramref name="level"/>.
  +		/// </para>
  +		/// </remarks>
   		bool IsEnabledFor(Level level);
   
   		/// <summary>
   		/// Gets the <see cref="ILoggerRepository"/> where this 
   		/// <c>Logger</c> instance is attached to.
   		/// </summary>
  -		/// <value>The <see cref="ILoggerRepository" /> that this logger belongs to.</value>
  +		/// <value>
  +		/// The <see cref="ILoggerRepository" /> that this logger belongs to.
  +		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the <see cref="ILoggerRepository"/> where this 
  +		/// <c>Logger</c> instance is attached to.
  +		/// </para>
  +		/// </remarks>
   		ILoggerRepository Repository { get; }
   	}
   }
  
  
  
  1.3       +8 -2      logging-log4net/src/Core/ILoggerWrapper.cs
  
  Index: ILoggerWrapper.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/ILoggerWrapper.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ILoggerWrapper.cs	16 Feb 2004 02:10:52 -0000	1.2
  +++ ILoggerWrapper.cs	6 Dec 2004 02:20:06 -0000	1.3
  @@ -28,8 +28,12 @@
   	/// Base interface for all wrappers
   	/// </summary>
   	/// <remarks>
  -	/// <para>Base interface for all wrappers</para>
  -	/// <para>All wrappers must extend this interface</para>
  +	/// <para>
  +	/// Base interface for all wrappers.
  +	/// </para>
  +	/// <para>
  +	/// All wrappers must implement this interface.
  +	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public interface ILoggerWrapper
  @@ -41,11 +45,13 @@
   		/// The <see cref="ILogger"/> object that in implementing this object.
   		/// </value>
   		/// <remarks>
  +		/// <para>
   		/// The <see cref="ILogger"/> object that in implementing this
   		/// object. The <c>Logger</c> object may not 
   		/// be the same object as this object because of logger decorators.
   		/// This gets the actual underlying objects that is used to process
   		/// the log events.
  +		/// </para>
   		/// </remarks>
   		ILogger Logger { get; }
   	}
  
  
  
  1.4       +13 -1     logging-log4net/src/Core/IOptionHandler.cs
  
  Index: IOptionHandler.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/IOptionHandler.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IOptionHandler.cs	30 May 2004 11:06:12 -0000	1.3
  +++ IOptionHandler.cs	6 Dec 2004 02:20:06 -0000	1.4
  @@ -21,8 +21,20 @@
   namespace log4net.Core
   {
   	/// <summary>
  -	/// A string based interface to configure components.
  +	/// Interface used to delay activate a configured object.
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// This allows an object to defer activation of its options until all
  +	/// options have been set. This is required for components which have
  +	/// related options that remain ambiguous until all are set.
  +	/// </para>
  +	/// <para>
  +	/// If a component implements this interface then the <see cref="ActivateOptions"/> method 
  +	/// must be called by the container after its all the configured properties have been set 
  +	/// and before the component can be used.
  +	/// </para>
  +	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public interface IOptionHandler
   	{
  
  
  
  1.3       +9 -3      logging-log4net/src/Core/ITriggeringEventEvaluator.cs
  
  Index: ITriggeringEventEvaluator.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/ITriggeringEventEvaluator.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ITriggeringEventEvaluator.cs	16 Feb 2004 02:10:52 -0000	1.2
  +++ ITriggeringEventEvaluator.cs	6 Dec 2004 02:20:06 -0000	1.3
  @@ -21,23 +21,29 @@
   namespace log4net.Core
   {
   	/// <summary>
  -	/// Implementations of this interface allow certain appenders to decide
  -	/// when to perform an appender specific action.
  +	/// Test if an <see cref="LoggingEvent"/> triggers an action
   	/// </summary>
   	/// <remarks>
  +	/// <para>
   	/// Implementations of this interface allow certain appenders to decide
   	/// when to perform an appender specific action.
  +	/// </para>
  +	/// <para>
  +	/// The action or behavior triggered is defined by the implementation.
  +	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public interface ITriggeringEventEvaluator
   	{
   		/// <summary>
  -		/// Is this the triggering event?
  +		/// Test if this event triggers the action
   		/// </summary>
   		/// <param name="loggingEvent">The event to check</param>
   		/// <returns><c>true</c> if this event triggers the action, otherwise <c>false</c></returns>
   		/// <remarks>
  +		/// <para>
   		/// Return <c>true</c> if this event triggers the action
  +		/// </para>
   		/// </remarks>
   		bool IsTriggeringEvent(LoggingEvent loggingEvent);
   	}
  
  
  
  1.6       +110 -33   logging-log4net/src/Core/Level.cs
  
  Index: Level.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/Level.cs,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Level.cs	21 Oct 2004 22:15:46 -0000	1.5
  +++ Level.cs	6 Dec 2004 02:20:06 -0000	1.6
  @@ -25,34 +25,34 @@
   	/// Defines the default set of levels recognized by the system.
   	/// </summary>
   	/// <remarks>
  -	/// <p>
  +	/// <para>
   	/// Each <see cref="LoggingEvent"/> has an associated <see cref="Level"/>.
  -	/// </p>
  -	/// <p>
  +	/// </para>
  +	/// <para>
   	/// Levels have a numeric <see cref="Level.Value"/> that defines the relative 
   	/// ordering between levels. Two Levels with the same <see cref="Level.Value"/> 
  -	/// are demmed to be equivalent.
  -	/// </p>
  -	/// <p>
  -	/// The levels that are recognised by log4net are set for each <see cref="log4net.Repository.ILoggerRepository"/>
  +	/// are deemed to be equivalent.
  +	/// </para>
  +	/// <para>
  +	/// The levels that are recognized by log4net are set for each <see cref="log4net.Repository.ILoggerRepository"/>
   	/// and each repository can have different levels defined. The levels are stored
   	/// in the <see cref="log4net.Repository.ILoggerRepository.LevelMap"/> on the repository. Levels are
   	/// looked up by name from the <see cref="log4net.Repository.ILoggerRepository.LevelMap"/>.
  -	/// </p>
  -	/// <p>
  +	/// </para>
  +	/// <para>
   	/// When logging at level INFO the actual level used is not <see cref="Level.Info"/> but
   	/// the value of <c>LoggerRepository.LevelMap["INFO"]</c>. The default value for this is
   	/// <see cref="Level.Info"/>, but this can be changed by reconfiguring the level map.
  -	/// </p>
  -	/// <p>
  +	/// </para>
  +	/// <para>
   	/// Each level has a <see cref="DisplayName"/> in addition to its <see cref="Name"/>. The 
   	/// <see cref="DisplayName"/> is the string that is written into the output log. By default
   	/// the display name is the same as the level name, but this can be used to alias levels
  -	/// or to localise the log output.
  -	/// </p>
  -	/// <p>
  +	/// or to localize the log output.
  +	/// </para>
  +	/// <para>
   	/// Some of the predefined levels recognized by the system are:
  -	/// </p>
  +	/// </para>
   	/// <list type="bullet">
   	///		<item>
   	///			<description><see cref="Off"/>.</description>
  @@ -87,12 +87,17 @@
   		#region Public Instance Constructors
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="Level" /> class with
  -		/// the specified level name and value.
  +		/// Constructor
   		/// </summary>
   		/// <param name="level">Integer value for this level, higher values represent more severe levels.</param>
   		/// <param name="levelName">The string name of this level.</param>
  -		/// <param name="displayName">The display name for this level. This may be localised or otherwise different from the name</param>
  +		/// <param name="displayName">The display name for this level. This may be localized or otherwise different from the name</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="Level" /> class with
  +		/// the specified level name and value.
  +		/// </para>
  +		/// </remarks>
   		public Level(int level, string levelName, string displayName) 
   		{
   			if (levelName == null)
  @@ -110,11 +115,16 @@
   		}
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="Level" /> class with
  -		/// the specified level name and value.
  +		/// Constructor
   		/// </summary>
   		/// <param name="level">Integer value for this level, higher values represent more severe levels.</param>
   		/// <param name="levelName">The string name of this level.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="Level" /> class with
  +		/// the specified level name and value.
  +		/// </para>
  +		/// </remarks>
   		public Level(int level, string levelName) : this(level, levelName, levelName)
   		{
   		}
  @@ -124,33 +134,48 @@
   		#region Public Instance Properties
   
   		/// <summary>
  -		/// Gets the name of the level.
  +		/// Gets the name of this level.
   		/// </summary>
   		/// <value>
  -		/// The name of the level.
  +		/// The name of this level.
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the name of this level.
  +		/// </para>
  +		/// </remarks>
   		public string Name
   		{
   			get { return m_levelName; }
   		}
   
   		/// <summary>
  -		/// Gets the value of the level.
  +		/// Gets the value of this level.
   		/// </summary>
   		/// <value>
  -		/// The value of the level.
  +		/// The value of this level.
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the value of this level.
  +		/// </para>
  +		/// </remarks>
   		public int Value
   		{
   			get { return m_levelValue; }
   		}
   
   		/// <summary>
  -		/// Gets the display name of the level.
  +		/// Gets the display name of this level.
   		/// </summary>
   		/// <value>
  -		/// The display name of the level.
  +		/// The display name of this level.
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the display name of this level.
  +		/// </para>
  +		/// </remarks>
   		public string DisplayName
   		{
   			get { return m_levelDisplayName; }
  @@ -167,18 +192,28 @@
   		/// <returns>
   		/// A <see cref="string" /> representation of the current <see cref="Level" />.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns the level <see cref="Name"/>.
  +		/// </para>
  +		/// </remarks>
   		override public string ToString() 
   		{
   			return m_levelName;
   		}
   
   		/// <summary>
  -		/// Compares the levels of <see cref="Level" /> instances, and 
  -		/// defers to base class if the target object is not a <see cref="Level" />
  -		/// instance.
  +		/// Compares levels.
   		/// </summary>
   		/// <param name="o">The object to compare against.</param>
   		/// <returns><c>true</c> if the objects are equal.</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Compares the levels of <see cref="Level" /> instances, and 
  +		/// defers to base class if the target object is not a <see cref="Level" />
  +		/// instance.
  +		/// </para>
  +		/// </remarks>
   		override public bool Equals(object o)
   		{
   			Level otherLevel = o as Level;
  @@ -193,10 +228,18 @@
   		}
   
   		/// <summary>
  -		/// Returns a hash code suitable for use in hashing algorithms and data 
  -		/// structures like a hash table.
  +		/// Returns a hash code
   		/// </summary>
   		/// <returns>A hash code for the current <see cref="Level" />.</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns a hash code suitable for use in hashing algorithms and data 
  +		/// structures like a hash table.
  +		/// </para>
  +		/// <para>
  +		/// Returns the hash code of the level <see cref="Value"/>.
  +		/// </para>
  +		/// </remarks>
   		override public int GetHashCode()
   		{
   			return m_levelValue;
  @@ -267,6 +310,11 @@
   		/// <c>true</c> if <paramref name="l" /> is greater than 
   		/// <paramref name="r" />; otherwise, <c>false</c>.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Compares two levels.
  +		/// </para>
  +		/// </remarks>
   		public static bool operator > (Level l, Level r)
   		{
   			return l.m_levelValue > r.m_levelValue;
  @@ -282,6 +330,11 @@
   		/// <c>true</c> if <paramref name="l" /> is less than 
   		/// <paramref name="r" />; otherwise, <c>false</c>.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Compares two levels.
  +		/// </para>
  +		/// </remarks>
   		public static bool operator < (Level l, Level r)
   		{
   			return l.m_levelValue < r.m_levelValue;
  @@ -297,6 +350,11 @@
   		/// <c>true</c> if <paramref name="l" /> is greater than or equal to 
   		/// <paramref name="r" />; otherwise, <c>false</c>.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Compares two levels.
  +		/// </para>
  +		/// </remarks>
   		public static bool operator >= (Level l, Level r)
   		{
   			return l.m_levelValue >= r.m_levelValue;
  @@ -312,6 +370,11 @@
   		/// <c>true</c> if <paramref name="l" /> is less than or equal to 
   		/// <paramref name="r" />; otherwise, <c>false</c>.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Compares two levels.
  +		/// </para>
  +		/// </remarks>
   		public static bool operator <= (Level l, Level r)
   		{
   			return l.m_levelValue <= r.m_levelValue;
  @@ -327,6 +390,11 @@
   		/// <c>true</c> if the value of <paramref name="l" /> is the same as the 
   		/// value of <paramref name="r" />; otherwise, <c>false</c>.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Compares two levels.
  +		/// </para>
  +		/// </remarks>
   		public static bool operator == (Level l, Level r)
   		{
   			if (((object)l) != null && ((object)r) != null)
  @@ -349,6 +417,11 @@
   		/// <c>true</c> if the value of <paramref name="l" /> is different from
   		/// the value of <paramref name="r" />; otherwise, <c>false</c>.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Compares two levels.
  +		/// </para>
  +		/// </remarks>
   		public static bool operator != (Level l, Level r)
   		{
   			return !(l==r);
  @@ -385,6 +458,11 @@
   		///		</item>
   		/// </list>
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Compares two levels.
  +		/// </para>
  +		/// </remarks>
   		public static int Compare(Level l, Level r)
   		{
   			if (l == null && r == null)
  @@ -408,8 +486,7 @@
   		#region Public Static Fields
   
   		/// <summary>
  -		/// The <see cref="Off" /> level designates a higher level than all the 
  -		/// rest.
  +		/// The <see cref="Off" /> level designates a higher level than all the rest.
   		/// </summary>
   		public readonly static Level Off = new Level(int.MaxValue, "OFF");
   
  
  
  
  1.7       +6 -6      logging-log4net/src/Core/LevelCollection.cs
  
  Index: LevelCollection.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/LevelCollection.cs,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- LevelCollection.cs	7 Jun 2004 01:02:39 -0000	1.6
  +++ LevelCollection.cs	6 Dec 2004 02:20:06 -0000	1.7
  @@ -44,13 +44,13 @@
   			/// <summary>
   			/// Advances the enumerator to the next element in the collection.
   			/// </summary>
  -			/// <exception cref="InvalidOperationException">
  -			/// The collection was modified after the enumerator was created.
  -			/// </exception>
   			/// <returns>
   			/// <c>true</c> if the enumerator was successfully advanced to the next element; 
   			/// <c>false</c> if the enumerator has passed the end of the collection.
   			/// </returns>
  +			/// <exception cref="InvalidOperationException">
  +			/// The collection was modified after the enumerator was created.
  +			/// </exception>
   			bool MoveNext();
   
   			/// <summary>
  @@ -690,13 +690,13 @@
   			/// <summary>
   			/// Advances the enumerator to the next element in the collection.
   			/// </summary>
  -			/// <exception cref="InvalidOperationException">
  -			/// The collection was modified after the enumerator was created.
  -			/// </exception>
   			/// <returns>
   			/// <c>true</c> if the enumerator was successfully advanced to the next element; 
   			/// <c>false</c> if the enumerator has passed the end of the collection.
   			/// </returns>
  +			/// <exception cref="InvalidOperationException">
  +			/// The collection was modified after the enumerator was created.
  +			/// </exception>
   			public bool MoveNext()
   			{
   				if (m_version != m_collection.m_version)
  
  
  
  1.3       +26 -14    logging-log4net/src/Core/LevelEvaluator.cs
  
  Index: LevelEvaluator.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/LevelEvaluator.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LevelEvaluator.cs	16 Feb 2004 02:10:52 -0000	1.2
  +++ LevelEvaluator.cs	6 Dec 2004 02:20:06 -0000	1.3
  @@ -26,10 +26,12 @@
   	/// An evaluator that triggers at a threshold level
   	/// </summary>
   	/// <remarks>
  -	/// <para>This evaluator will trigger if the level of the event
  +	/// <para>
  +	/// This evaluator will trigger if the level of the event
   	/// passed to <see cref="IsTriggeringEvent(LoggingEvent)"/>
   	/// is equal to or greater than the <see cref="Threshold"/>
  -	/// level.</para>
  +	/// level.
  +	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public class LevelEvaluator : ITriggeringEventEvaluator 
  @@ -43,12 +45,15 @@
   		/// Create a new evaluator using the <see cref="Level.Off"/> threshold.
   		/// </summary>
   		/// <remarks>
  -		/// <para>Create a new evaluator using the <see cref="Level.Off"/> threshold.</para>
  -		/// 
  -		/// <para>This evaluator will trigger if the level of the event
  +		/// <para>
  +		/// Create a new evaluator using the <see cref="Level.Off"/> threshold.
  +		/// </para>
  +		/// <para>
  +		/// This evaluator will trigger if the level of the event
   		/// passed to <see cref="IsTriggeringEvent(LoggingEvent)"/>
   		/// is equal to or greater than the <see cref="Threshold"/>
  -		/// level.</para>
  +		/// level.
  +		/// </para>
   		/// </remarks>
   		public LevelEvaluator() : this(Level.Off)
   		{
  @@ -59,12 +64,15 @@
   		/// </summary>
   		/// <param name="threshold">the threshold to trigger at</param>
   		/// <remarks>
  -		/// <para>Create a new evaluator using the specified <see cref="Level"/> threshold.</para>
  -		/// 
  -		/// <para>This evaluator will trigger if the level of the event
  +		/// <para>
  +		/// Create a new evaluator using the specified <see cref="Level"/> threshold.
  +		/// </para>
  +		/// <para>
  +		/// This evaluator will trigger if the level of the event
   		/// passed to <see cref="IsTriggeringEvent(LoggingEvent)"/>
   		/// is equal to or greater than the <see cref="Threshold"/>
  -		/// level.</para>
  +		/// level.
  +		/// </para>
   		/// </remarks>
   		public LevelEvaluator(Level threshold)
   		{
  @@ -83,10 +91,12 @@
   		/// The <see cref="Level"/> that will cause this evaluator to trigger
   		/// </value>
   		/// <remarks>
  -		/// <para>This evaluator will trigger if the level of the event
  +		/// <para>
  +		/// This evaluator will trigger if the level of the event
   		/// passed to <see cref="IsTriggeringEvent(LoggingEvent)"/>
   		/// is equal to or greater than the <see cref="Threshold"/>
  -		/// level.</para>
  +		/// level.
  +		/// </para>
   		/// </remarks>
   		public Level Threshold
   		{
  @@ -102,10 +112,12 @@
   		/// is equal or higher than the <see cref="Threshold"/>. 
   		/// Otherwise it returns <c>false</c></returns>
   		/// <remarks>
  -		/// <para>This evaluator will trigger if the level of the event
  +		/// <para>
  +		/// This evaluator will trigger if the level of the event
   		/// passed to <see cref="IsTriggeringEvent(LoggingEvent)"/>
   		/// is equal to or greater than the <see cref="Threshold"/>
  -		/// level.</para>
  +		/// level.
  +		/// </para>
   		/// </remarks>
   		public bool IsTriggeringEvent(LoggingEvent loggingEvent) 
   		{
  
  
  
  1.7       +44 -32    logging-log4net/src/Core/LevelMap.cs
  
  Index: LevelMap.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/LevelMap.cs,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- LevelMap.cs	21 Oct 2004 22:15:46 -0000	1.6
  +++ LevelMap.cs	6 Dec 2004 02:20:06 -0000	1.7
  @@ -28,9 +28,11 @@
   	/// Mapping between string name and Level object
   	/// </summary>
   	/// <remarks>
  -	/// Mapping between string name and Level object.
  -	/// This mapping is held separately for each ILoggerRepository.
  +	/// <para>
  +	/// Mapping between string name and <see cref="Level"/> object.
  +	/// This mapping is held separately for each <see cref="log4net.Repository.ILoggerRepository"/>.
   	/// The level name is case insensitive.
  +	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public sealed class LevelMap
  @@ -43,18 +45,15 @@
   		/// </summary>
   		private Hashtable m_mapName2Level = new Hashtable(CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default);
   
  -//		/// <summary>
  -//		/// Mapping from level value to Level object
  -//		/// </summary>
  -//		private Hashtable m_mapValue2Level = new Hashtable();
  -
   		#endregion
   
   		/// <summary>
   		/// Construct the level map
   		/// </summary>
   		/// <remarks>
  +		/// <para>
   		/// Construct the level map.
  +		/// </para>
   		/// </remarks>
   		public LevelMap()
   		{
  @@ -64,13 +63,14 @@
   		/// Clear the internal maps of all levels
   		/// </summary>
   		/// <remarks>
  +		/// <para>
   		/// Clear the internal maps of all levels
  +		/// </para>
   		/// </remarks>
   		public void Clear()
   		{
   			// Clear all current levels
   			m_mapName2Level.Clear();
  -//			m_mapValue2Level.Clear();
   		}
   
   		/// <summary>
  @@ -79,9 +79,11 @@
   		/// <param name="name">The name of the Level to lookup</param>
   		/// <returns>a Level from the map with the name specified</returns>
   		/// <remarks>
  +		/// <para>
   		/// Returns the <see cref="Level"/> from the
   		/// map with the name specified. If the no level is
   		/// found then <c>null</c> is returned.
  +		/// </para>
   		/// </remarks>
   		public Level this[string name]
   		{
  @@ -99,32 +101,17 @@
   			}
   		}
   
  -//		/// <summary>
  -//		/// Lookup a <see cref="Level"/> by value
  -//		/// </summary>
  -//		/// <param name="value">The value of the Level to lookup</param>
  -//		/// <returns>a Level from the map with the value specified</returns>
  -//		/// <remarks>
  -//		/// Returns the <see cref="Level"/> from the
  -//		/// map with the value specified. If the no level is
  -//		/// found then <c>null</c> is returned.
  -//		/// </remarks>
  -//		public Level this[int value]
  -//		{
  -//			get
  -//			{
  -//				lock(this)
  -//				{
  -//					return (Level)m_mapValue2Level[value];
  -//				}
  -//			}
  -//		}
  -
   		/// <summary>
   		/// Create a new Level and add it to the map
   		/// </summary>
   		/// <param name="name">the string to display for the Level</param>
   		/// <param name="value">the level value to give to the Level</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Create a new Level and add it to the map
  +		/// </para>
  +		/// </remarks>
  +		/// <seealso cref="Add(string,int,string)"/>
   		public void Add(string name, int value)
   		{
   			Add(name, value, null);
  @@ -136,6 +123,11 @@
   		/// <param name="name">the string to display for the Level</param>
   		/// <param name="value">the level value to give to the Level</param>
   		/// <param name="displayName">the display name to give to the Level</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Create a new Level and add it to the map
  +		/// </para>
  +		/// </remarks>
   		public void Add(string name, int value, string displayName)
   		{
   			if (name == null)
  @@ -156,9 +148,14 @@
   		}
   
   		/// <summary>
  -		/// Add a Level it to the map
  +		/// Add a Level to the map
   		/// </summary>
   		/// <param name="level">the Level to add</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Add a Level to the map
  +		/// </para>
  +		/// </remarks>
   		public void Add(Level level)
   		{
   			if (level == null)
  @@ -168,7 +165,6 @@
   			lock(this)
   			{
   				m_mapName2Level[level.Name] = level;
  -//				m_mapValue2Level[level.Value] = level;
   			}
   		}
   
  @@ -176,6 +172,11 @@
   		/// Return all possible levels as a list of Level objects.
   		/// </summary>
   		/// <returns>all possible levels as a list of Level objects</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Return all possible levels as a list of Level objects.
  +		/// </para>
  +		/// </remarks>
   		public LevelCollection AllLevels
   		{
   			get
  @@ -193,6 +194,18 @@
   		/// <param name="defaultLevel">the name of the level to lookup is taken from this level. 
   		/// If the level is not set on the map then this level is added</param>
   		/// <returns>the level in the map with the name specified</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Lookup a named level from the map. The name of the level to lookup is taken
  +		/// from the <see cref="Level.Name"/> property of the <paramref name="defaultLevel"/>
  +		/// argument.
  +		/// </para>
  +		/// <para>
  +		/// If no level with the specified name is found then the 
  +		/// <paramref name="defaultLevel"/> argument is added to the level map
  +		/// and returned.
  +		/// </para>
  +		/// </remarks>
   		public Level LookupWithDefault(Level defaultLevel)
   		{
   			if (defaultLevel == null)
  @@ -211,6 +224,5 @@
   				return level;
   			}
   		}
  -
   	}
   }
  
  
  
  1.6       +50 -12    logging-log4net/src/Core/LocationInfo.cs
  
  Index: LocationInfo.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/LocationInfo.cs,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LocationInfo.cs	1 Oct 2004 21:24:05 -0000	1.5
  +++ LocationInfo.cs	6 Dec 2004 02:20:06 -0000	1.6
  @@ -62,11 +62,16 @@
   		#region Public Instance Constructors
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="LocationInfo" />
  -		/// class based on the current thread.
  +		/// Constructor
   		/// </summary>
   		/// <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
   		/// the stack boundary into the logging system for this call.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="LocationInfo" />
  +		/// class based on the current thread.
  +		/// </para>
  +		/// </remarks>
   		public LocationInfo(Type callerStackBoundaryDeclaringType) 
   		{
   			// Initialize all fields
  @@ -142,13 +147,18 @@
   		}
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="LocationInfo" />
  -		/// class with the specified data.
  +		/// Constructor
   		/// </summary>
   		/// <param name="className">The fully qualified class name.</param>
   		/// <param name="methodName">The method name.</param>
   		/// <param name="fileName">The file name.</param>
   		/// <param name="lineNumber">The line number of the method within the file.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="LocationInfo" />
  +		/// class with the specified data.
  +		/// </para>
  +		/// </remarks>
   		public LocationInfo(string className, string methodName, string fileName, string lineNumber)
   		{
   			m_className = className;
  @@ -171,6 +181,12 @@
   		/// The fully qualified class name of the caller making the logging 
   		/// request.
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the fully qualified class name of the caller making the logging 
  +		/// request.
  +		/// </para>
  +		/// </remarks>
   		public string ClassName
   		{
   			get { return m_className; }
  @@ -179,7 +195,14 @@
   		/// <summary>
   		/// Gets the file name of the caller.
   		/// </summary>
  -		/// <value>The file name of the caller.</value>
  +		/// <value>
  +		/// The file name of the caller.
  +		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the file name of the caller.
  +		/// </para>
  +		/// </remarks>
   		public string FileName
   		{
   			get { return m_fileName; }
  @@ -191,6 +214,11 @@
   		/// <value>
   		/// The line number of the caller.
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the line number of the caller.
  +		/// </para>
  +		/// </remarks>
   		public string LineNumber
   		{
   			get { return m_lineNumber; }
  @@ -202,19 +230,29 @@
   		/// <value>
   		/// The method name of the caller.
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the method name of the caller.
  +		/// </para>
  +		/// </remarks>
   		public string MethodName
   		{
   			get { return m_methodName; }
   		}
   
   		/// <summary>
  -		/// Gets all available caller information, in the format
  -		/// <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>
  +		/// Gets all available caller information
   		/// </summary>
   		/// <value>
   		/// All available caller information, in the format
   		/// <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets all available caller information, in the format
  +		/// <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>
  +		/// </para>
  +		/// </remarks>
   		public string FullInfo
   		{
   			get { return m_fullInfo; }
  @@ -224,11 +262,11 @@
   
   		#region Private Instance Fields
   
  -		private string m_className;
  -		private string m_fileName;
  -		private string m_lineNumber;
  -		private string m_methodName;
  -		private string m_fullInfo;
  +		private readonly string m_className;
  +		private readonly string m_fileName;
  +		private readonly string m_lineNumber;
  +		private readonly string m_methodName;
  +		private readonly string m_fullInfo;
   
   		#endregion Private Instance Fields
   
  
  
  
  1.3       +29 -8     logging-log4net/src/Core/LogException.cs
  
  Index: LogException.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/LogException.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LogException.cs	16 Feb 2004 02:10:52 -0000	1.2
  +++ LogException.cs	6 Dec 2004 02:20:06 -0000	1.3
  @@ -28,7 +28,8 @@
   	/// <para>
   	/// This type extends <see cref="ApplicationException"/>. It
   	/// does not add any new functionality but does differentiate the
  -	/// type of exception being thrown.</para>
  +	/// type of exception being thrown.
  +	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	/// <author>Gert Driesen</author>
  @@ -40,27 +41,42 @@
   		#region Public Instance Constructors
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="LogException" /> class.
  +		/// Constructor
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="LogException" /> class.
  +		/// </para>
  +		/// </remarks>
   		public LogException()
   		{
   		}
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="LogException" /> class with
  -		/// the specified message.
  +		/// Constructor
   		/// </summary>
   		/// <param name="message">A message to include with the exception.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="LogException" /> class with
  +		/// the specified message.
  +		/// </para>
  +		/// </remarks>
   		public LogException(String message) : base(message) 
   		{
   		}
   		
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="LogException" /> class
  -		/// with the specified message and inner exception.
  +		/// Constructor
   		/// </summary>
   		/// <param name="message">A message to include with the exception.</param>
   		/// <param name="innerException">A nested exception to include.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="LogException" /> class
  +		/// with the specified message and inner exception.
  +		/// </para>
  +		/// </remarks>
   		public LogException(String message, Exception innerException) : base(message, innerException) 
   		{
   		}
  @@ -71,11 +87,16 @@
   
   #if !NETCF
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="LogException" /> class 
  -		/// with serialized data.
  +		/// Serialization constructor
   		/// </summary>
   		/// <param name="info">The <see cref="SerializationInfo" /> that holds the serialized object data about the exception being thrown.</param>
   		/// <param name="context">The <see cref="StreamingContext" /> that contains contextual information about the source or destination.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="LogException" /> class 
  +		/// with serialized data.
  +		/// </para>
  +		/// </remarks>
   		protected LogException(SerializationInfo info, StreamingContext context) : base(info, context) 
   		{
   		}
  
  
  
  1.7       +60 -17    logging-log4net/src/Core/LogImpl.cs
  
  Index: LogImpl.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/LogImpl.cs,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- LogImpl.cs	31 Oct 2004 22:35:50 -0000	1.6
  +++ LogImpl.cs	6 Dec 2004 02:20:06 -0000	1.7
  @@ -101,6 +101,11 @@
   		/// Construct a new wrapper for the specified logger.
   		/// </summary>
   		/// <param name="logger">The logger to wrap.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Construct a new wrapper for the specified logger.
  +		/// </para>
  +		/// </remarks>
   		public LogImpl(ILogger logger) : base(logger)
   		{
   			// Listen for changes to the repository
  @@ -116,6 +121,11 @@
   		/// Virtual method called when the configuration of the repository changes
   		/// </summary>
   		/// <param name="repository">the repository holding the levels</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Virtual method called when the configuration of the repository changes
  +		/// </para>
  +		/// </remarks>
   		protected virtual void ReloadLevels(ILoggerRepository repository)
   		{
   			LevelMap levelMap = repository.LevelMap;
  @@ -158,14 +168,19 @@
   		}
   
   		/// <summary>
  -		/// Logs a message object with the <c>DEBUG</c> level including
  -		/// the stack trace of the <see cref="Exception"/> <paramref name="t"/> passed
  -		/// as a parameter.
  +		/// Logs a message object with the <c>DEBUG</c> level
   		/// </summary>
   		/// <param name="message">The message object to log.</param>
   		/// <param name="t">The exception to log, including its stack trace.</param>
   		/// <remarks>
  +		/// <para>
  +		/// Logs a message object with the <c>DEBUG</c> level including
  +		/// the stack trace of the <see cref="Exception"/> <paramref name="t"/> passed
  +		/// as a parameter.
  +		/// </para>
  +		/// <para>
   		/// See the <see cref="Debug(object)"/> form for more detailed information.
  +		/// </para>
   		/// </remarks>
   		/// <seealso cref="Debug(object)"/>
   		virtual public void Debug(object message, Exception t) 
  @@ -247,14 +262,19 @@
   		}
     
   		/// <summary>
  -		/// Logs a message object with the <c>INFO</c> level including
  -		/// the stack trace of the <see cref="Exception"/> <paramref name="t"/> 
  -		/// passed as a parameter.
  +		/// Logs a message object with the <c>INFO</c> level.
   		/// </summary>
   		/// <param name="message">The message object to log.</param>
   		/// <param name="t">The exception to log, including its stack trace.</param>
   		/// <remarks>
  +		/// <para>
  +		/// Logs a message object with the <c>INFO</c> level including
  +		/// the stack trace of the <see cref="Exception"/> <paramref name="t"/> 
  +		/// passed as a parameter.
  +		/// </para>
  +		/// <para>
   		/// See the <see cref="Info(object)"/> form for more detailed information.
  +		/// </para>
   		/// </remarks>
   		/// <seealso cref="Info(object)"/>
   		virtual public void Info(object message, Exception t) 
  @@ -336,14 +356,19 @@
   		}
     
   		/// <summary>
  -		/// Logs a message object with the <c>WARN</c> level including
  -		/// the stack trace of the <see cref="Exception"/> <paramref name="t"/> 
  -		/// passed as a parameter.
  +		/// Logs a message object with the <c>WARN</c> level
   		/// </summary>
   		/// <param name="message">The message object to log.</param>
   		/// <param name="t">The exception to log, including its stack trace.</param>
   		/// <remarks>
  +		/// <para>
  +		/// Logs a message object with the <c>WARN</c> level including
  +		/// the stack trace of the <see cref="Exception"/> <paramref name="t"/> 
  +		/// passed as a parameter.
  +		/// </para>
  +		/// <para>
   		/// See the <see cref="Warn(object)"/> form for more detailed information.
  +		/// </para>
   		/// </remarks>
   		/// <seealso cref="Warn(object)"/>
   		virtual public void Warn(object message, Exception t) 
  @@ -425,14 +450,19 @@
   		}
   
   		/// <summary>
  -		/// Logs a message object with the <c>ERROR</c> level including
  -		/// the stack trace of the <see cref="Exception"/> <paramref name="t"/> 
  -		/// passed as a parameter.
  +		/// Logs a message object with the <c>ERROR</c> level
   		/// </summary>
   		/// <param name="message">The message object to log.</param>
   		/// <param name="t">The exception to log, including its stack trace.</param>
   		/// <remarks>
  +		/// <para>
  +		/// Logs a message object with the <c>ERROR</c> level including
  +		/// the stack trace of the <see cref="Exception"/> <paramref name="t"/> 
  +		/// passed as a parameter.
  +		/// </para>
  +		/// <para>
   		/// See the <see cref="Error(object)"/> form for more detailed information.
  +		/// </para>
   		/// </remarks>
   		/// <seealso cref="Error(object)"/>
   		virtual public void Error(object message, Exception t) 
  @@ -514,14 +544,19 @@
   		}
     
   		/// <summary>
  -		/// Logs a message object with the <c>FATAL</c> level including
  -		/// the stack trace of the <see cref="Exception"/> <paramref name="t"/> 
  -		/// passed as a parameter.
  +		/// Logs a message object with the <c>FATAL</c> level
   		/// </summary>
   		/// <param name="message">The message object to log.</param>
   		/// <param name="t">The exception to log, including its stack trace.</param>
   		/// <remarks>
  +		/// <para>
  +		/// Logs a message object with the <c>FATAL</c> level including
  +		/// the stack trace of the <see cref="Exception"/> <paramref name="t"/> 
  +		/// passed as a parameter.
  +		/// </para>
  +		/// <para>
   		/// See the <see cref="Fatal(object)"/> form for more detailed information.
  +		/// </para>
   		/// </remarks>
   		/// <seealso cref="Fatal(object)"/>
   		virtual public void Fatal(object message, Exception t) 
  @@ -590,7 +625,7 @@
   		/// <para>
   		/// For some <c>log</c> Logger object, when you write:
   		/// </para>
  -		/// <code>
  +		/// <code lang="C#">
   		/// log.Debug("This is entry number: " + i );
   		/// </code>
   		/// <para>
  @@ -600,7 +635,7 @@
   		/// <para>
   		/// If you are worried about speed, then you should write:
   		/// </para>
  -		/// <code>
  +		/// <code lang="C#">
   		/// if (log.IsDebugEnabled())
   		/// { 
   		///	 log.Debug("This is entry number: " + i );
  @@ -630,8 +665,10 @@
   		/// <c>false</c> otherwise.
   		/// </value>
   		/// <remarks>
  +		/// <para>
   		/// See <see cref="IsDebugEnabled"/> for more information and examples 
   		/// of using this method.
  +		/// </para>
   		/// </remarks>
   		/// <seealso cref="LogImpl.IsDebugEnabled"/>
   		virtual public bool IsInfoEnabled
  @@ -647,8 +684,10 @@
   		/// <c>false</c> otherwise.
   		/// </value>
   		/// <remarks>
  +		/// <para>
   		/// See <see cref="IsDebugEnabled"/> for more information and examples 
   		/// of using this method.
  +		/// </para>
   		/// </remarks>
   		/// <seealso cref="ILog.IsDebugEnabled"/>
   		virtual public bool IsWarnEnabled
  @@ -664,7 +703,9 @@
   		/// <c>false</c> otherwise.
   		/// </value>
   		/// <remarks>
  +		/// <para>
   		/// See <see cref="IsDebugEnabled"/> for more information and examples of using this method.
  +		/// </para>
   		/// </remarks>
   		/// <seealso cref="ILog.IsDebugEnabled"/>
   		virtual public bool IsErrorEnabled
  @@ -680,7 +721,9 @@
   		/// <c>false</c> otherwise.
   		/// </value>
   		/// <remarks>
  +		/// <para>
   		/// See <see cref="IsDebugEnabled"/> for more information and examples of using this method.
  +		/// </para>
   		/// </remarks>
   		/// <seealso cref="ILog.IsDebugEnabled"/>
   		virtual public bool IsFatalEnabled
  
  
  
  1.6       +101 -63   logging-log4net/src/Core/LoggerManager.cs
  
  Index: LoggerManager.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/LoggerManager.cs,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LoggerManager.cs	21 May 2004 22:15:32 -0000	1.5
  +++ LoggerManager.cs	6 Dec 2004 02:20:06 -0000	1.6
  @@ -47,7 +47,9 @@
   		/// Private constructor to prevent instances. Only static methods should be used.
   		/// </summary>
   		/// <remarks>
  +		/// <para>
   		/// Private constructor to prevent instances. Only static methods should be used.
  +		/// </para>
   		/// </remarks>
   		private LoggerManager() 
   		{
  @@ -61,9 +63,11 @@
   		/// Hook the shutdown event
   		/// </summary>
   		/// <remarks>
  +		/// <para>
   		/// On the full .NET runtime, the static constructor hooks up the 
   		/// <c>AppDomain.ProcessExit</c> and <c>AppDomain.DomainUnload</c>> events. 
   		/// These are used to shutdown the log4net system as the application exits.
  +		/// </para>
   		/// </remarks>
   		static LoggerManager()
   		{
  @@ -97,11 +101,13 @@
   		/// Register for ProcessExit and DomainUnload events on the AppDomain
   		/// </summary>
   		/// <remarks>
  +		/// <para>
   		/// This needs to be in a separate method because the events make
   		/// a LinkDemand for the ControlAppDomain SecurityPermission. Because
   		/// this is a LinkDemand it is demanded at JIT time. Therefore we cannot
   		/// catch the exception in the method itself, we have to catch it in the
   		/// caller.
  +		/// </para>
   		/// </remarks>
   		private static void RegisterAppDomainEvents()
   		{
  @@ -124,8 +130,10 @@
   		/// <param name="repository">the repository to lookup in</param>
   		/// <returns>Return the default <see cref="ILoggerRepository"/> instance</returns>
   		/// <remarks>
  -		/// <para>Gets the <see cref="ILoggerRepository"/> for the repository specified
  -		/// by the <paramref name="repository"/> argument.</para>
  +		/// <para>
  +		/// Gets the <see cref="ILoggerRepository"/> for the repository specified
  +		/// by the <paramref name="repository"/> argument.
  +		/// </para>
   		/// </remarks>
   		[Obsolete("Use GetRepository instead of GetLoggerRepository")]
   		public static ILoggerRepository GetLoggerRepository(string repository)
  @@ -150,8 +158,10 @@
   		/// <param name="repository">the repository to lookup in</param>
   		/// <returns>Return the default <see cref="ILoggerRepository"/> instance</returns>
   		/// <remarks>
  -		/// <para>Gets the <see cref="ILoggerRepository"/> for the repository specified
  -		/// by the <paramref name="repository"/> argument.</para>
  +		/// <para>
  +		/// Gets the <see cref="ILoggerRepository"/> for the repository specified
  +		/// by the <paramref name="repository"/> argument.
  +		/// </para>
   		/// </remarks>
   		public static ILoggerRepository GetRepository(string repository)
   		{
  @@ -167,6 +177,11 @@
   		/// </summary>
   		/// <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
   		/// <returns>The default <see cref="ILoggerRepository"/> instance.</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns the default <see cref="ILoggerRepository"/> instance.
  +		/// </para>
  +		/// </remarks>
   		public static ILoggerRepository GetRepository(Assembly repositoryAssembly)
   		{
   			if (repositoryAssembly == null)
  @@ -179,17 +194,19 @@
   		/// <summary>
   		/// Returns the named logger if it exists.
   		/// </summary>
  -		/// <remarks>
  -		/// <para>If the named logger exists (in the specified repository) then it
  -		/// returns a reference to the logger, otherwise it returns
  -		/// <c>null</c>.</para>
  -		/// </remarks>
   		/// <param name="repository">The repository to lookup in.</param>
   		/// <param name="name">The fully qualified logger name to look for.</param>
   		/// <returns>
   		/// The logger found, or <c>null</c> if the named logger does not exist in the
   		/// specified repository.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// If the named logger exists (in the specified repository) then it
  +		/// returns a reference to the logger, otherwise it returns
  +		/// <c>null</c>.
  +		/// </para>
  +		/// </remarks>
   		public static ILogger Exists(string repository, string name) 
   		{
   			if (repository == null)
  @@ -206,17 +223,19 @@
   		/// <summary>
   		/// Returns the named logger if it exists.
   		/// </summary>
  -		/// <remarks>
  -		/// <para>If the named logger exists (in the specified assembly's repository) then it
  -		/// returns a reference to the logger, otherwise it returns
  -		/// <c>null</c>.</para>
  -		/// </remarks>
   		/// <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
   		/// <param name="name">The fully qualified logger name to look for.</param>
   		/// <returns>
   		/// The logger found, or <c>null</c> if the named logger does not exist in the
   		/// specified assembly's repository.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// If the named logger exists (in the specified assembly's repository) then it
  +		/// returns a reference to the logger, otherwise it returns
  +		/// <c>null</c>.
  +		/// </para>
  +		/// </remarks>
   		public static ILogger Exists(Assembly repositoryAssembly, string name) 
   		{
   			if (repositoryAssembly == null)
  @@ -234,10 +253,12 @@
   		/// Returns all the currently defined loggers in the specified repository.
   		/// </summary>
   		/// <param name="repository">The repository to lookup in.</param>
  +		/// <returns>All the defined loggers.</returns>
   		/// <remarks>
  +		/// <para>
   		/// The root logger is <b>not</b> included in the returned array.
  +		/// </para>
   		/// </remarks>
  -		/// <returns>All the defined loggers.</returns>
   		public static ILogger[] GetCurrentLoggers(string repository)
   		{
   			if (repository == null)
  @@ -251,10 +272,12 @@
   		/// Returns all the currently defined loggers in the specified assembly's repository.
   		/// </summary>
   		/// <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
  +		/// <returns>All the defined loggers.</returns>
   		/// <remarks>
  +		/// <para>
   		/// The root logger is <b>not</b> included in the returned array.
  +		/// </para>
   		/// </remarks>
  -		/// <returns>All the defined loggers.</returns>
   		public static ILogger[] GetCurrentLoggers(Assembly repositoryAssembly)
   		{
   			if (repositoryAssembly == null)
  @@ -267,6 +290,9 @@
   		/// <summary>
   		/// Retrieves or creates a named logger.
   		/// </summary>
  +		/// <param name="repository">The repository to lookup in.</param>
  +		/// <param name="name">The name of the logger to retrieve.</param>
  +		/// <returns>The logger with the name specified.</returns>
   		/// <remarks>
   		/// <para>
   		/// Retrieves a logger named as the <paramref name="name"/>
  @@ -280,9 +306,6 @@
   		/// log4net.
   		/// </para>
   		/// </remarks>
  -		/// <param name="repository">The repository to lookup in.</param>
  -		/// <param name="name">The name of the logger to retrieve.</param>
  -		/// <returns>The logger with the name specified.</returns>
   		public static ILogger GetLogger(string repository, string name)
   		{
   			if (repository == null)
  @@ -299,6 +322,9 @@
   		/// <summary>
   		/// Retrieves or creates a named logger.
   		/// </summary>
  +		/// <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
  +		/// <param name="name">The name of the logger to retrieve.</param>
  +		/// <returns>The logger with the name specified.</returns>
   		/// <remarks>
   		/// <para>
   		/// Retrieves a logger named as the <paramref name="name"/>
  @@ -312,9 +338,6 @@
   		/// log4net.
   		/// </para>
   		/// </remarks>
  -		/// <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
  -		/// <param name="name">The name of the logger to retrieve.</param>
  -		/// <returns>The logger with the name specified.</returns>
   		public static ILogger GetLogger(Assembly repositoryAssembly, string name)
   		{
   			if (repositoryAssembly == null)
  @@ -331,12 +354,14 @@
   		/// <summary>
   		/// Shorthand for <see cref="LogManager.GetLogger(string)"/>.
   		/// </summary>
  -		/// <remarks>
  -		/// Gets the logger for the fully qualified name of the type specified.
  -		/// </remarks>
   		/// <param name="repository">The repository to lookup in.</param>
   		/// <param name="type">The <paramref name="type"/> of which the fullname will be used as the name of the logger to retrieve.</param>
   		/// <returns>The logger with the name specified.</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the logger for the fully qualified name of the type specified.
  +		/// </para>
  +		/// </remarks>
   		public static ILogger GetLogger(string repository, Type type) 
   		{
   			if (repository == null)
  @@ -353,12 +378,14 @@
   		/// <summary>
   		/// Shorthand for <see cref="LogManager.GetLogger(string)"/>.
   		/// </summary>
  -		/// <remarks>
  -		/// Gets the logger for the fully qualified name of the type specified.
  -		/// </remarks>
   		/// <param name="repositoryAssembly">the assembly to use to lookup the repository</param>
   		/// <param name="type">The <paramref name="type"/> of which the fullname will be used as the name of the logger to retrieve.</param>
   		/// <returns>The logger with the name specified.</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the logger for the fully qualified name of the type specified.
  +		/// </para>
  +		/// </remarks>
   		public static ILogger GetLogger(Assembly repositoryAssembly, Type type) 
   		{
   			if (repositoryAssembly == null)
  @@ -403,6 +430,7 @@
   		/// <summary>
   		/// Shuts down the repository for the repository specified.
   		/// </summary>
  +		/// <param name="repository">The repository to shutdown.</param>
   		/// <remarks>
   		/// <para>
   		/// Calling this method will <b>safely</b> close and remove all
  @@ -420,7 +448,6 @@
   		/// and again to a nested appender.
   		/// </para>
   		/// </remarks>
  -		/// <param name="repository">The repository to shutdown.</param>
   		public static void ShutdownRepository(string repository) 
   		{
   			if (repository == null)
  @@ -433,6 +460,7 @@
   		/// <summary>
   		/// Shuts down the repository for the repository specified.
   		/// </summary>
  +		/// <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
   		/// <remarks>
   		/// <para>
   		/// Calling this method will <b>safely</b> close and remove all
  @@ -451,7 +479,6 @@
   		/// and again to a nested appender.
   		/// </para>
   		/// </remarks>
  -		/// <param name="repositoryAssembly">The assembly to use to lookup the repository.</param>
   		public static void ShutdownRepository(Assembly repositoryAssembly) 
   		{
   			if (repositoryAssembly == null)
  @@ -464,6 +491,7 @@
   		/// <summary>
   		/// Resets all values contained in this repository instance to their defaults.
   		/// </summary>
  +		/// <param name="repository">The repository to reset.</param>
   		/// <remarks>
   		/// <para>
   		/// Resets all values contained in the repository instance to their
  @@ -474,7 +502,6 @@
   		/// message disabling is set its default "off" value.
   		/// </para>		
   		/// </remarks>
  -		/// <param name="repository">The repository to reset.</param>
   		public static void ResetConfiguration(string repository) 
   		{
   			if (repository == null)
  @@ -487,6 +514,7 @@
   		/// <summary>
   		/// Resets all values contained in this repository instance to their defaults.
   		/// </summary>
  +		/// <param name="repositoryAssembly">The assembly to use to lookup the repository to reset.</param>
   		/// <remarks>
   		/// <para>
   		/// Resets all values contained in the repository instance to their
  @@ -497,7 +525,6 @@
   		/// message disabling is set its default "off" value.
   		/// </para>		
   		/// </remarks>
  -		/// <param name="repositoryAssembly">The assembly to use to lookup the repository to reset.</param>
   		public static void ResetConfiguration(Assembly repositoryAssembly) 
   		{
   			if (repositoryAssembly == null)
  @@ -510,6 +537,8 @@
   		/// <summary>
   		/// Creates a repository with the specified name.
   		/// </summary>
  +		/// <param name="repository">The name of the repository, this must be unique amongst repositories.</param>
  +		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		/// <remarks>
   		/// <para>
   		/// <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
  @@ -523,8 +552,6 @@
   		/// An <see cref="Exception"/> will be thrown if the repository already exists.
   		/// </para>
   		/// </remarks>
  -		/// <param name="repository">The name of the repository, this must be unique amongst repositories.</param>
  -		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		/// <exception cref="LogException">The specified repository already exists.</exception>
   		[Obsolete("Use CreateRepository instead of CreateDomain")]
   		public static ILoggerRepository CreateDomain(string repository)
  @@ -535,6 +562,8 @@
   		/// <summary>
   		/// Creates a repository with the specified name.
   		/// </summary>
  +		/// <param name="repository">The name of the repository, this must be unique amongst repositories.</param>
  +		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		/// <remarks>
   		/// <para>
   		/// Creates the default type of <see cref="ILoggerRepository"/> which is a
  @@ -545,8 +574,6 @@
   		/// An <see cref="Exception"/> will be thrown if the repository already exists.
   		/// </para>
   		/// </remarks>
  -		/// <param name="repository">The name of the repository, this must be unique amongst repositories.</param>
  -		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		/// <exception cref="LogException">The specified repository already exists.</exception>
   		public static ILoggerRepository CreateRepository(string repository)
   		{
  @@ -560,6 +587,11 @@
   		/// <summary>
   		/// Creates a repository with the specified name and repository type.
   		/// </summary>
  +		/// <param name="repository">The name of the repository, this must be unique to the repository.</param>
  +		/// <param name="repositoryType">A <see cref="Type"/> that implements <see cref="ILoggerRepository"/>
  +		/// and has a no arg constructor. An instance of this type will be created to act
  +		/// as the <see cref="ILoggerRepository"/> for the repository specified.</param>
  +		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		/// <remarks>
   		/// <para>
   		/// <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
  @@ -569,11 +601,6 @@
   		/// An Exception will be thrown if the repository already exists.
   		/// </para>
   		/// </remarks>
  -		/// <param name="repository">The name of the repository, this must be unique to the repository.</param>
  -		/// <param name="repositoryType">A <see cref="Type"/> that implements <see cref="ILoggerRepository"/>
  -		/// and has a no arg constructor. An instance of this type will be created to act
  -		/// as the <see cref="ILoggerRepository"/> for the repository specified.</param>
  -		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		/// <exception cref="LogException">The specified repository already exists.</exception>
   		[Obsolete("Use CreateRepository instead of CreateDomain")]
   		public static ILoggerRepository CreateDomain(string repository, Type repositoryType)
  @@ -584,17 +611,17 @@
   		/// <summary>
   		/// Creates a repository with the specified name and repository type.
   		/// </summary>
  +		/// <param name="repository">The name of the repository, this must be unique to the repository.</param>
  +		/// <param name="repositoryType">A <see cref="Type"/> that implements <see cref="ILoggerRepository"/>
  +		/// and has a no arg constructor. An instance of this type will be created to act
  +		/// as the <see cref="ILoggerRepository"/> for the repository specified.</param>
  +		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		/// <remarks>
   		/// <para>
   		/// The <paramref name="repository"/> name must be unique. Repositories cannot be redefined.
   		/// An Exception will be thrown if the repository already exists.
   		/// </para>
   		/// </remarks>
  -		/// <param name="repository">The name of the repository, this must be unique to the repository.</param>
  -		/// <param name="repositoryType">A <see cref="Type"/> that implements <see cref="ILoggerRepository"/>
  -		/// and has a no arg constructor. An instance of this type will be created to act
  -		/// as the <see cref="ILoggerRepository"/> for the repository specified.</param>
  -		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		/// <exception cref="LogException">The specified repository already exists.</exception>
   		public static ILoggerRepository CreateRepository(string repository, Type repositoryType)
   		{
  @@ -612,6 +639,11 @@
   		/// <summary>
   		/// Creates a repository for the specified assembly and repository type.
   		/// </summary>
  +		/// <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param>
  +		/// <param name="repositoryType">A <see cref="Type"/> that implements <see cref="ILoggerRepository"/>
  +		/// and has a no arg constructor. An instance of this type will be created to act
  +		/// as the <see cref="ILoggerRepository"/> for the repository specified.</param>
  +		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		/// <remarks>
   		/// <para>
   		/// <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>
  @@ -622,11 +654,6 @@
   		/// same assembly specified will return the same repository instance.
   		/// </para>
   		/// </remarks>
  -		/// <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param>
  -		/// <param name="repositoryType">A <see cref="Type"/> that implements <see cref="ILoggerRepository"/>
  -		/// and has a no arg constructor. An instance of this type will be created to act
  -		/// as the <see cref="ILoggerRepository"/> for the repository specified.</param>
  -		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		[Obsolete("Use CreateRepository instead of CreateDomain")]
   		public static ILoggerRepository CreateDomain(Assembly repositoryAssembly, Type repositoryType)
   		{
  @@ -636,6 +663,11 @@
   		/// <summary>
   		/// Creates a repository for the specified assembly and repository type.
   		/// </summary>
  +		/// <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param>
  +		/// <param name="repositoryType">A <see cref="Type"/> that implements <see cref="ILoggerRepository"/>
  +		/// and has a no arg constructor. An instance of this type will be created to act
  +		/// as the <see cref="ILoggerRepository"/> for the repository specified.</param>
  +		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		/// <remarks>
   		/// <para>
   		/// The <see cref="ILoggerRepository"/> created will be associated with the repository
  @@ -643,11 +675,6 @@
   		/// same assembly specified will return the same repository instance.
   		/// </para>
   		/// </remarks>
  -		/// <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param>
  -		/// <param name="repositoryType">A <see cref="Type"/> that implements <see cref="ILoggerRepository"/>
  -		/// and has a no arg constructor. An instance of this type will be created to act
  -		/// as the <see cref="ILoggerRepository"/> for the repository specified.</param>
  -		/// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns>
   		public static ILoggerRepository CreateRepository(Assembly repositoryAssembly, Type repositoryType)
   		{
   			if (repositoryAssembly == null)
  @@ -662,9 +689,14 @@
   		}
   
   		/// <summary>
  -		/// Gets the list of currently defined repositories.
  +		/// Gets an array of all currently defined repositories.
   		/// </summary>
   		/// <returns>An array of all the known <see cref="ILoggerRepository"/> objects.</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets an array of all currently defined repositories.
  +		/// </para>
  +		/// </remarks>
   		public static ILoggerRepository[] GetAllRepositories()
   		{
   			return RepositorySelector.GetAllRepositories();
  @@ -735,9 +767,12 @@
   		/// <param name="sender">the <see cref="AppDomain"/> that is exiting</param>
   		/// <param name="e">null</param>
   		/// <remarks>
  -		/// <para>Called when the <see cref="AppDomain.DomainUnload"/> event fires.</para>
  -		/// 
  -		/// <para>When the event is triggered the log4net system is <see cref="Shutdown()"/>.</para>
  +		/// <para>
  +		/// Called when the <see cref="AppDomain.DomainUnload"/> event fires.
  +		/// </para>
  +		/// <para>
  +		/// When the event is triggered the log4net system is <see cref="Shutdown()"/>.
  +		/// </para>
   		/// </remarks>
   		private static void OnDomainUnload(object sender, EventArgs e)
   		{
  @@ -750,9 +785,12 @@
   		/// <param name="sender">the <see cref="AppDomain"/> that is exiting</param>
   		/// <param name="e">null</param>
   		/// <remarks>
  -		/// <para>Called when the <see cref="AppDomain.ProcessExit"/> event fires.</para>
  -		/// 
  -		/// <para>When the event is triggered the log4net system is <see cref="Shutdown()"/>.</para>
  +		/// <para>
  +		/// Called when the <see cref="AppDomain.ProcessExit"/> event fires.
  +		/// </para>
  +		/// <para>
  +		/// When the event is triggered the log4net system is <see cref="Shutdown()"/>.
  +		/// </para>
   		/// </remarks>
   		private static void OnProcessExit(object sender, EventArgs e)
   		{
  
  
  
  1.3       +5 -0      logging-log4net/src/Core/LoggerWrapperImpl.cs
  
  Index: LoggerWrapperImpl.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/LoggerWrapperImpl.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LoggerWrapperImpl.cs	16 Feb 2004 02:10:52 -0000	1.2
  +++ LoggerWrapperImpl.cs	6 Dec 2004 02:20:06 -0000	1.3
  @@ -36,6 +36,11 @@
   		/// Constructs a new wrapper for the specified logger.
   		/// </summary>
   		/// <param name="logger">The logger to wrap.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Constructs a new wrapper for the specified logger.
  +		/// </para>
  +		/// </remarks>
   		protected LoggerWrapperImpl(ILogger logger) 
   		{
   			m_logger = logger;
  
  
  
  1.16      +149 -76   logging-log4net/src/Core/LoggingEvent.cs
  
  Index: LoggingEvent.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/LoggingEvent.cs,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- LoggingEvent.cs	29 Nov 2004 21:20:27 -0000	1.15
  +++ LoggingEvent.cs	6 Dec 2004 02:20:06 -0000	1.16
  @@ -32,6 +32,11 @@
   	/// <summary>
   	/// Portable data structure used by <see cref="LoggingEvent"/>
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// Portable data structure used by <see cref="LoggingEvent"/>
  +	/// </para>
  +	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public struct LoggingEventData
   	{
  @@ -40,28 +45,43 @@
   		/// <summary>
   		/// The logger name.
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// The logger name.
  +		/// </para>
  +		/// </remarks>
   		public string LoggerName;
   
   		/// <summary>
  +		/// Level of logging event.
  +		/// </summary>
  +		/// <remarks>
  +		/// <para>
   		/// Level of logging event. Level cannot be Serializable
   		/// because it is a flyweight.  Due to its special serialization it
   		/// cannot be declared final either.
  -		/// </summary>
  +		/// </para>
  +		/// </remarks>
   		public Level Level;
   
   		/// <summary>
  -		/// The nested diagnostic context (NDC) of logging event.
  +		/// The application supplied message.
   		/// </summary>
  -		public string Ndc;
  -
  -		/// <summary>
  +		/// <remarks>
  +		/// <para>
   		/// The application supplied message of logging event.
  -		/// </summary>
  +		/// </para>
  +		/// </remarks>
   		public string Message;
   
   		/// <summary>
  -		/// The name of thread in which this logging event was generated
  +		/// The name of thread
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// The name of thread in which this logging event was generated
  +		/// </para>
  +		/// </remarks>
   		public string ThreadName;
   
   		/// <summary>
  @@ -77,36 +97,63 @@
   		/// <summary>
   		/// Location information for the caller.
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// Location information for the caller.
  +		/// </para>
  +		/// </remarks>
   		public LocationInfo LocationInfo;
   
   		/// <summary>
  +		/// String representation of the user
  +		/// </summary>
  +		/// <remarks>
  +		/// <para>
   		/// String representation of the user's windows name,
   		/// like DOMAIN\username
  -		/// </summary>
  +		/// </para>
  +		/// </remarks>
   		public string UserName;
   
   		/// <summary>
  -		/// String representation of the current thread's principal identity.
  +		/// String representation of the identity.
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// String representation of the current thread's principal identity.
  +		/// </para>
  +		/// </remarks>
   		public string Identity;
   
   		/// <summary>
   		/// The string representation of the exception
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// The string representation of the exception
  +		/// </para>
  +		/// </remarks>
   		public string ExceptionString;
   
   		/// <summary>
   		/// String representation of the AppDomain.
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// String representation of the AppDomain.
  +		/// </para>
  +		/// </remarks>
   		public string Domain;
   
   		/// <summary>
   		/// Additional event specific properties
   		/// </summary>
   		/// <remarks>
  +		/// <para>
   		/// A logger or an appender may attach additional
   		/// properties to specific events. These properties
   		/// have a string key and an object value.
  +		/// </para>
   		/// </remarks>
   		public PropertiesDictionary Properties;
   
  @@ -116,6 +163,11 @@
   	/// <summary>
   	/// Flags passed to the <see cref="LoggingEvent.Fix"/> property
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// Flags passed to the <see cref="LoggingEvent.Fix"/> property
  +	/// </para>
  +	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	[Flags] public enum FixFlags
   	{
  @@ -197,7 +249,6 @@
   		/// This set of partial fields gives good performance. The following fields are fixed:
   		/// </para>
   		/// <list type="bullet">
  -		/// <item><description><see cref="Ndc"/></description></item>
   		/// <item><description><see cref="Message"/></description></item>
   		/// <item><description><see cref="ThreadName"/></description></item>
   		/// <item><description><see cref="Exception"/></description></item>
  @@ -205,27 +256,31 @@
   		/// <item><description><see cref="Properties"/></description></item>
   		/// </list>
   		/// </remarks>
  -		Partial = Ndc | Message | ThreadName | Exception | Domain | Properties,
  +		Partial = Message | ThreadName | Exception | Domain | Properties,
   	}
   
   	/// <summary>
   	/// The internal representation of logging events. 
   	/// </summary>
   	/// <remarks>
  -	/// <para>When an affirmative decision is made to log then a 
  +	/// <para>
  +	/// When an affirmative decision is made to log then a 
   	/// <see cref="LoggingEvent"/> instance is created. This instance 
  -	/// is passed around to the different log4net components.</para>
  -	/// 
  -	/// <para>This class is of concern to those wishing to extend log4net.</para>
  -	/// 
  -	/// <para>Some of the values in instances of <see cref="LoggingEvent"/>
  +	/// is passed around to the different log4net components.
  +	/// </para>
  +	/// <para>
  +	/// This class is of concern to those wishing to extend log4net.
  +	/// </para>
  +	/// <para>
  +	/// Some of the values in instances of <see cref="LoggingEvent"/>
   	/// are considered volatile, that is the values are correct at the
   	/// time the event is delivered to appenders, but will not be consistent
   	/// at any time afterwards. If an event is to be stored and then processed
   	/// at a later time these volatile values must be fixed by calling
   	/// <see cref="FixVolatileData()"/>. There is a performance penalty
   	/// for incurred by calling <see cref="FixVolatileData()"/> but it
  -	/// is essential to maintaining data consistency.</para>
  +	/// is essential to maintaining data consistency.
  +	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	/// <author>Gert Driesen</author>
  @@ -329,11 +384,16 @@
   #if !NETCF
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="LoggingEvent" /> class 
  -		/// with serialized data.
  +		/// Serialization constructor
   		/// </summary>
   		/// <param name="info">The <see cref="SerializationInfo" /> that holds the serialized object data.</param>
   		/// <param name="context">The <see cref="StreamingContext" /> that contains contextual information about the source or destination.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="LoggingEvent" /> class 
  +		/// with serialized data.
  +		/// </para>
  +		/// </remarks>
   		protected LoggingEvent(SerializationInfo info, StreamingContext context) 
   		{
   			m_data.LoggerName = info.GetString("LoggerName");
  @@ -345,7 +405,6 @@
   			// be necessary to re-lookup the level based only on the name.
   			m_data.Level = (Level)info.GetValue("Level", typeof(Level));
   
  -			m_data.Ndc = info.GetString("Ndc");
   			m_data.Message = info.GetString("Message");
   			m_data.ThreadName = info.GetString("ThreadName");
   			m_data.TimeStamp = info.GetDateTime("TimeStamp");
  @@ -395,6 +454,11 @@
   		/// <value>
   		/// The <see cref="Level" /> of the logging event.
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the <see cref="Level" /> of the logging event.
  +		/// </para>
  +		/// </remarks>
   		public Level Level
   		{
   			get { return m_data.Level; } 
  @@ -422,6 +486,11 @@
   		/// <value>
   		/// The name of the logger that logged the event.
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the name of the logger that logged the event.
  +		/// </para>
  +		/// </remarks>
   		public string LoggerName
   		{
   			get { return m_data.LoggerName; }
  @@ -455,28 +524,6 @@
   			}
   		}
   
  -//		/// <summary>
  -//		/// Gets the text of the <see cref="ThreadContext.Stacks"/>.
  -//		/// </summary>
  -//		/// <value>
  -//		/// The text of the <see cref="ThreadContext.Stacks"/>.
  -//		/// </value>
  -//		public string NestedContext
  -//		{
  -//			get
  -//			{
  -//				if (m_data.Ndc == null) 
  -//				{
  -//					m_data.Ndc = ThreadContext.Stacks["NDC"].GetFullMessage();
  -//					if (m_data.Ndc == null)
  -//					{
  -//						m_data.Ndc = "";
  -//					}
  -//				}
  -//				return m_data.Ndc; 
  -//			}
  -//		}
  -
   		/// <summary>
   		/// Gets the message object used to initialize this event.
   		/// </summary>
  @@ -499,10 +546,7 @@
   		/// </remarks>
   		public object MessageObject
   		{
  -			get 
  -			{ 
  -				return m_message;
  -			}
  +			get { return m_message; }
   		} 
   
   		/// <summary>
  @@ -527,21 +571,20 @@
   		/// </remarks>
   		public Exception ExceptionObject
   		{
  -			get 
  -			{ 
  -				return m_thrownException;
  -			}
  +			get { return m_thrownException; }
   		} 
   
   		/// <summary>
   		/// The <see cref="ILoggerRepository"/> that this event was created in.
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// The <see cref="ILoggerRepository"/> that this event was created in.
  +		/// </para>
  +		/// </remarks>
   		public ILoggerRepository Repository
   		{
  -			get 
  -			{ 
  -				return m_repository;
  -			}
  +			get { return m_repository; }
   		}
   
   		/// <summary>
  @@ -563,7 +606,9 @@
   		/// The message rendered through the <see cref="ILoggerRepository.RendererMap" />.
   		/// </value>
   		/// <remarks>
  +		/// <para>
   		/// The collected information is cached for future use.
  +		/// </para>
   		/// </remarks>
   		public string RenderedMessage
   		{
  @@ -600,11 +645,13 @@
   		/// </summary>
   		/// <param name="writer">the writer to write the message to</param>
   		/// <remarks>
  +		/// <para>
   		/// Unlike the <see cref="RenderedMessage"/> property this method
   		/// does store the message data in the internal cache. Therefore 
   		/// if called only once this method should be faster than the
   		/// <see cref="RenderedMessage"/> property, however if the message is
   		/// to be accessed multiple times then the property will be more efficient.
  +		/// </para>
   		/// </remarks>
   		public void WriteRenderedMessage(TextWriter writer)
   		{
  @@ -641,7 +688,9 @@
   		/// the name is not available.
   		/// </value>
   		/// <remarks>
  +		/// <para>
   		/// The collected information is cached for future use.
  +		/// </para>
   		/// </remarks>
   		public string ThreadName
   		{
  @@ -706,10 +755,20 @@
   		/// <para>
   		/// Timing for these operations:
   		/// </para>
  -		/// <code>
  -		/// 00:00:00.2031250 sec, 10000 loops, WindowsIdentity.GetCurrent()
  -		/// 00:00:08.0468750 sec, 10000 loops, WindowsIdentity.GetCurrent().Name
  -		/// </code>
  +		/// <list type="table">
  +		///   <listheader>
  +		///     <term>Method</term>
  +		///     <description>Results</description>
  +		///   </listheader>
  +		///   <item>
  +		///	    <term><c>WindowsIdentity.GetCurrent()</c></term>
  +		///	    <description>10000 loops, 00:00:00.2031250 seconds</description>
  +		///   </item>
  +		///   <item>
  +		///	    <term><c>WindowsIdentity.GetCurrent().Name</c></term>
  +		///	    <description>10000 loops, 00:00:08.0468750 seconds</description>
  +		///   </item>
  +		/// </list>
   		/// <para>
   		/// This means we could speed things up almost 40 times by caching the 
   		/// value of the <c>WindowsIdentity.GetCurrent().Name</c> property, since 
  @@ -804,6 +863,14 @@
   		/// <summary>
   		/// Gets the AppDomain friendly name.
   		/// </summary>
  +		/// <value>
  +		/// The AppDomain friendly name.
  +		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the AppDomain friendly name.
  +		/// </para>
  +		/// </remarks>
   		public string Domain
   		{
   			get 
  @@ -907,7 +974,6 @@
   
   			info.AddValue("LoggerName", m_data.LoggerName);
   			info.AddValue("Level", m_data.Level);
  -			info.AddValue("Ndc", m_data.Ndc);
   			info.AddValue("Message", m_data.Message);
   			info.AddValue("ThreadName", m_data.ThreadName);
   			info.AddValue("TimeStamp", m_data.TimeStamp);
  @@ -928,14 +994,17 @@
   		/// <summary>
   		/// Gets the portable data for this <see cref="LoggingEvent" />.
   		/// </summary>
  +		/// <returns>The <see cref="LoggingEventData"/> for this event.</returns>
   		/// <remarks>
   		/// <para>
   		/// A new <see cref="LoggingEvent"/> can be constructed using a
  -		/// <see cref="LoggingEventData"/> instance.</para>
  -		/// <para>Does a <see cref="FixFlags.Partial"/> fix of the data
  -		/// in the logging event before returning the event data</para>
  +		/// <see cref="LoggingEventData"/> instance.
  +		/// </para>
  +		/// <para>
  +		/// Does a <see cref="FixFlags.Partial"/> fix of the data
  +		/// in the logging event before returning the event data.
  +		/// </para>
   		/// </remarks>
  -		/// <returns>The <see cref="LoggingEventData"/> for this event.</returns>
   		public LoggingEventData GetLoggingEventData()
   		{
   			return GetLoggingEventData(FixFlags.Partial);
  @@ -945,12 +1014,13 @@
   		/// Gets the portable data for this <see cref="LoggingEvent" />.
   		/// </summary>
   		/// <param name="fixFlags">The set of data to ensure is fixed in the LoggingEventData</param>
  +		/// <returns>The <see cref="LoggingEventData"/> for this event.</returns>
   		/// <remarks>
   		/// <para>
   		/// A new <see cref="LoggingEvent"/> can be constructed using a
  -		/// <see cref="LoggingEventData"/> instance.</para>
  +		/// <see cref="LoggingEventData"/> instance.
  +		/// </para>
   		/// </remarks>
  -		/// <returns>The <see cref="LoggingEventData"/> for this event.</returns>
   		public LoggingEventData GetLoggingEventData(FixFlags fixFlags)
   		{
   			Fix = fixFlags;
  @@ -961,12 +1031,14 @@
   		/// Returns this event's exception's rendered using the 
   		/// <see cref="ILoggerRepository.RendererMap" />.
   		/// </summary>
  -		/// <remarks>
  -		/// <b>Obsolete. Use <see cref="GetExceptionString"/> instead.</b>
  -		/// </remarks>
   		/// <returns>
   		/// This event's exception's rendered using the <see cref="ILoggerRepository.RendererMap" />.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// <b>Obsolete. Use <see cref="GetExceptionString"/> instead.</b>
  +		/// </para>
  +		/// </remarks>
   		[Obsolete("Use GetExceptionString instead")]
   		public string GetExceptionStrRep() 
   		{
  @@ -980,6 +1052,12 @@
   		/// <returns>
   		/// This event's exception's rendered using the <see cref="ILoggerRepository.RendererMap" />.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns this event's exception's rendered using the 
  +		/// <see cref="ILoggerRepository.RendererMap" />.
  +		/// </para>
  +		/// </remarks>
   		public string GetExceptionString() 
   		{
   			if (m_data.ExceptionString == null)
  @@ -1083,9 +1161,11 @@
   		/// </summary>
   		/// <param name="flags">the fields to fix</param>
   		/// <remarks>
  +		/// <para>
   		/// Only fields specified in the <paramref name="flags"/> will be fixed.
   		/// Fields will not be fixed if they have previously been fixed.
   		/// It is not possible to 'unfix' a field.
  +		/// </para>
   		/// </remarks>
   		protected void FixVolatileData(FixFlags flags)
   		{
  @@ -1094,13 +1174,6 @@
   
   			if (updateFlags > 0)
   			{
  -//				if ((updateFlags & FixFlags.Ndc) != 0)
  -//				{
  -//					// Force the NDC to be cached
  -//					string tmp = this.NestedContext;
  -//
  -//					m_fixFlags |= FixFlags.Ndc;
  -//				}
   				if ((updateFlags & FixFlags.Message) != 0)
   				{
   					// Force the message to be rendered
  
  
  
  1.2       +17 -0     logging-log4net/src/Core/SecurityContext.cs
  
  Index: SecurityContext.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/SecurityContext.cs,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SecurityContext.cs	12 Nov 2004 22:33:30 -0000	1.1
  +++ SecurityContext.cs	6 Dec 2004 02:20:06 -0000	1.2
  @@ -23,6 +23,13 @@
   	/// <summary>
   	/// A SecurityContext used by log4net when interacting with protected resources
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// A SecurityContext used by log4net when interacting with protected resources
  +	/// for example with operating system services. This can be used to impersonate
  +	/// a principal that has been granted privileges on the system resources.
  +	/// </para>
  +	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public abstract class SecurityContext
   	{
  @@ -32,6 +39,16 @@
   		/// <param name="state">State supplied by the caller</param>
   		/// <returns>An <see cref="IDisposable"/> instance that will
   		/// revoke the impersonation of this SecurityContext, or <c>null</c></returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Impersonate this security context. Further calls on the current
  +		/// thread should now be made in the security context provided
  +		/// by this object. When the <see cref="IDisposable"/> result 
  +		/// <see cref="IDisposable.Dispose"/> method is called the security
  +		/// context of the thread should be reverted to the state it was in
  +		/// before <see cref="Impersonate"/> was called.
  +		/// </para>
  +		/// </remarks>
   		public abstract IDisposable Impersonate(object state);
   	}
   }
  
  
  
  1.2       +53 -27    logging-log4net/src/Core/SecurityContextProvider.cs
  
  Index: SecurityContextProvider.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/SecurityContextProvider.cs,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SecurityContextProvider.cs	12 Nov 2004 22:33:30 -0000	1.1
  +++ SecurityContextProvider.cs	6 Dec 2004 02:20:06 -0000	1.2
  @@ -23,15 +23,43 @@
   namespace log4net.Core
   {
   	/// <summary>
  -	/// A SecurityContext used by log4net when interacting with protected resources
  +	/// The <see cref="SecurityContextProvider"/> providers default <see cref="SecurityContext"/> instances.
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// A configured component that interacts with potentially protected system
  +	/// resources uses a <see cref="SecurityContext"/> to provide the elevated
  +	/// privileges required. If the <see cref="SecurityContext"/> object has
  +	/// been not been explicitly provided to the component then the component
  +	/// will request one from this <see cref="SecurityContextProvider"/>.
  +	/// </para>
  +	/// <para>
  +	/// By default the <see cref="SecurityContextProvider.DefaultProvider"/> is
  +	/// an instance of <see cref="SecurityContextProvider"/> which returns only
  +	/// <see cref="NullSecurityContext"/> objects. This is a reasonable default
  +	/// where the privileges required are not know by the system.
  +	/// </para>
  +	/// <para>
  +	/// This default behavior can be overridden by subclassing the <see cref="SecurityContextProvider"/>
  +	/// and overriding the <see cref="CreateSecurityContext"/> method to return
  +	/// the desired <see cref="SecurityContext"/> objects. The default provider
  +	/// can be replaced by programmatically setting the value of the 
  +	/// <see cref="SecurityContextProvider.DefaultProvider"/> property.
  +	/// </para>
  +	/// <para>
  +	/// An alternative is to use the <c>log4net.Config.SecurityContextProviderAttribute</c>
  +	/// This attribute can be applied to an assembly in the same way as the
  +	/// <c>log4net.Config.XmlConfiguratorAttribute"</c>. The attribute takes
  +	/// the type to use as the <see cref="SecurityContextProvider"/> as an argument.
  +	/// </para>
  +	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public class SecurityContextProvider
   	{
   		/// <summary>
   		/// The default provider
   		/// </summary>
  -		private static SecurityContextProvider s_defaultProvider = null;
  +		private static SecurityContextProvider s_defaultProvider = new SecurityContextProvider();
   
   		/// <summary>
   		/// Gets or sets the default SecurityContextProvider
  @@ -41,40 +69,34 @@
   		/// </value>
   		/// <remarks>
   		/// <para>
  -		/// ........... HOW LOOKUP PROVIDER
  +		/// The default provider is used by configured components that
  +		/// require a <see cref="SecurityContext"/> and have not had one
  +		/// given to them.
  +		/// </para>
  +		/// <para>
  +		/// By default this is an instance of <see cref="SecurityContextProvider"/>
  +		/// that returns <see cref="NullSecurityContext"/> objects.
  +		/// </para>
  +		/// <para>
  +		/// The default provider can be set programmatically by setting
  +		/// the value of this property to a sub class of <see cref="SecurityContextProvider"/>
  +		/// that has the desired behavior.
   		/// </para>
   		/// </remarks>
   		public static SecurityContextProvider DefaultProvider
   		{
  -			get 
  -			{
  -				if (s_defaultProvider == null)
  -				{
  -					lock(typeof(SecurityContextProvider))
  -					{
  -						if (s_defaultProvider == null)
  -						{
  -							// Lookup the default provider
  -							s_defaultProvider = CreateDefaultProvider();
  -						}
  -					}
  -				}
  -				return s_defaultProvider;
  -			}
  -			set 
  -			{
  -				s_defaultProvider = value;
  -			}
  -		}
  -
  -		private static SecurityContextProvider CreateDefaultProvider()
  -		{
  -			return new SecurityContextProvider();
  +			get { return s_defaultProvider; }
  +			set { s_defaultProvider = value; }
   		}
   
   		/// <summary>
   		/// Protected default constructor to allow subclassing
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// Protected default constructor to allow subclassing
  +		/// </para>
  +		/// </remarks>
   		protected SecurityContextProvider()
   		{
   		}
  @@ -87,6 +109,10 @@
   		/// <remarks>
   		/// <para>
   		/// The default implementation is to return a <see cref="NullSecurityContext"/>.
  +		/// </para>
  +		/// <para>
  +		/// Subclasses should override this method to provide their own
  +		/// behavior.
   		/// </para>
   		/// </remarks>
   		public virtual SecurityContext CreateSecurityContext(object consumer)
  
  
  
  1.6       +62 -13    logging-log4net/src/Core/WrapperMap.cs
  
  Index: WrapperMap.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/WrapperMap.cs,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- WrapperMap.cs	7 Jun 2004 01:05:14 -0000	1.5
  +++ WrapperMap.cs	6 Dec 2004 02:20:06 -0000	1.6
  @@ -29,6 +29,17 @@
   	/// Delegate used to handle creation of new wrappers.
   	/// </summary>
   	/// <param name="logger">The logger to wrap in a wrapper.</param>
  +	/// <remarks>
  +	/// <para>
  +	/// Delegate used to handle creation of new wrappers. This delegate
  +	/// is called from the <see cref="WrapperMap.CreateNewWrapperObject"/>
  +	/// method to construct the wrapper for the specified logger.
  +	/// </para>
  +	/// <para>
  +	/// The delegate to use is supplied to the <see cref="WrapperMap"/>
  +	/// constructor.
  +	/// </para>
  +	/// </remarks>
   	public delegate ILoggerWrapper WrapperCreationHandler(ILogger logger);
   
   	#endregion WrapperCreationHandler
  @@ -39,8 +50,15 @@
   	/// <remarks>
   	/// <para>
   	/// This class maintains a mapping between <see cref="ILogger"/> objects and
  -	/// <see cref="ILoggerWrapper"/> objects. Use the indexer accessor to lookup the 
  -	/// <see cref="ILoggerWrapper"/> for the specified <see cref="ILogger"/>.
  +	/// <see cref="ILoggerWrapper"/> objects. Use the <see cref="GetWrapper"/> method to 
  +	/// lookup the <see cref="ILoggerWrapper"/> for the specified <see cref="ILogger"/>.
  +	/// </para>
  +	/// <para>
  +	/// New wrapper instances are created by the <see cref="CreateNewWrapperObject"/>
  +	/// method. The default behavior is for this method to delegate construction
  +	/// of the wrapper to the <see cref="WrapperCreationHandler"/> delegate supplied
  +	/// to the constructor. This allows specialization of the behavior without
  +	/// requiring subclassing of this type.
   	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
  @@ -50,10 +68,15 @@
   		#region Public Instance Constructors
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="WrapperMap" /> class with 
  -		/// the specified handler to create the wrapper objects.
  +		/// Initializes a new instance of the <see cref="WrapperMap" />
   		/// </summary>
   		/// <param name="createWrapperHandler">The handler to use to create the wrapper objects.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="WrapperMap" /> class with 
  +		/// the specified handler to create the wrapper objects.
  +		/// </para>
  +		/// </remarks>
   		public WrapperMap(WrapperCreationHandler createWrapperHandler) 
   		{
   			m_createWrapperHandler = createWrapperHandler;
  @@ -69,10 +92,18 @@
   		/// <summary>
   		/// Gets the wrapper object for the specified logger.
   		/// </summary>
  +		/// <returns>The wrapper object for the specified logger</returns>
   		/// <remarks>
  -		/// If the logger is null then the corresponding wrapper is null
  +		/// <para>
  +		/// If the logger is null then the corresponding wrapper is null.
  +		/// </para>
  +		/// <para>
  +		/// Looks up the wrapper it it has previously been requested and
  +		/// returns it. If the wrapper has never been requested before then
  +		/// the <see cref="CreateNewWrapperObject"/> virtual method is
  +		/// called.
  +		/// </para>
   		/// </remarks>
  -		/// <returns>The wrapper object for the specified logger</returns>
   		virtual public ILoggerWrapper GetWrapper(ILogger logger)
   		{
   			// If the logger is null then the corresponding wrapper is null
  @@ -126,6 +157,13 @@
   		/// <value>
   		/// Map of logger repositories.
   		/// </value>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the hashtable that is keyed on <see cref="ILoggerRepository"/>. The
  +		/// values are hashtables keyed on <see cref="ILogger"/> with the
  +		/// value being the corresponding <see cref="ILoggerWrapper"/>.
  +		/// </para>
  +		/// </remarks>
   		protected Hashtable Repositories 
   		{
   			get { return this.m_repositories; }
  @@ -139,12 +177,14 @@
   		/// Creates the wrapper object for the specified logger.
   		/// </summary>
   		/// <param name="logger">The logger to wrap in a wrapper.</param>
  +		/// <returns>The wrapper object for the logger.</returns>
   		/// <remarks>
  +		/// <para>
   		/// This implementation uses the <see cref="WrapperCreationHandler"/>
   		/// passed to the constructor to create the wrapper. This method
   		/// can be overridden in a subclass.
  +		/// </para>
   		/// </remarks>
  -		/// <returns>The wrapper object for the logger.</returns>
   		virtual protected ILoggerWrapper CreateNewWrapperObject(ILogger logger)
   		{
   			if (m_createWrapperHandler != null)
  @@ -158,14 +198,23 @@
   		/// Called when a monitored repository shutdown event is received.
   		/// </summary>
   		/// <param name="repository">The <see cref="ILoggerRepository"/> that is shutting down</param>
  +		/// <remarks>
  +		/// <para>
  +		/// This method is called when a <see cref="ILoggerRepository"/> that this
  +		/// <see cref="WrapperMap"/> is holding loggers for has signaled its shutdown
  +		/// event <see cref="ILoggerRepository.ShutdownEvent"/>. The default
  +		/// behavior of this method is to release the references to the loggers
  +		/// and their wrappers generated for this repository.
  +		/// </para>
  +		/// </remarks>
   		virtual protected void RepositoryShutdown(ILoggerRepository repository)
   		{
   			lock(this)
   			{
  -				// Remove all repository from map
  +				// Remove the repository from map
   				m_repositories.Remove(repository);
   
  -				// Unhook all events from the repository
  +				// Unhook events from the repository
   				repository.ShutdownEvent -= m_shutdownHandler;
   			}
   		}
  @@ -189,19 +238,19 @@
   		#region Private Instance Variables
   
   		/// <summary>
  -		/// Map of logger repositories.
  +		/// Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings
   		/// </summary>
  -		private Hashtable m_repositories = new Hashtable();
  +		private readonly Hashtable m_repositories = new Hashtable();
   
   		/// <summary>
   		/// The handler to use to create the extension wrapper objects.
   		/// </summary>
  -		private WrapperCreationHandler m_createWrapperHandler;
  +		private readonly WrapperCreationHandler m_createWrapperHandler;
   
   		/// <summary>
   		/// Internal reference to the delegate used to register for repository shutdown events.
   		/// </summary>
  -		private LoggerRepositoryShutdownEventHandler m_shutdownHandler;
  +		private readonly LoggerRepositoryShutdownEventHandler m_shutdownHandler;
    
   		#endregion Private Instance Variables
   	}
  
  
  

Mime
View raw message