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
        }
  
  
  

Reply via email to