Author: bodewig
Date: Wed Dec  7 15:48:02 2011
New Revision: 1211480

URL: http://svn.apache.org/viewvc?rev=1211480&view=rev
Log:
Make OnlyOnceErrorHandler subclass friendly.  LOG4NET-283

Modified:
    logging/log4net/trunk/src/Util/OnlyOnceErrorHandler.cs

Modified: logging/log4net/trunk/src/Util/OnlyOnceErrorHandler.cs
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Util/OnlyOnceErrorHandler.cs?rev=1211480&r1=1211479&r2=1211480&view=diff
==============================================================================
--- logging/log4net/trunk/src/Util/OnlyOnceErrorHandler.cs (original)
+++ logging/log4net/trunk/src/Util/OnlyOnceErrorHandler.cs Wed Dec  7 15:48:02 
2011
@@ -30,7 +30,7 @@ namespace log4net.Util
        /// </summary>
        /// <remarks>
        /// <para>
-       /// The error message is processed using the LogLog sub-system.
+       /// The error message is processed using the LogLog sub-system by 
default.
        /// </para>
        /// <para>
        /// This policy aims at protecting an otherwise working application
@@ -98,37 +98,50 @@ namespace log4net.Util
                /// <param name="errorCode">The internal error code.</param>
                /// <remarks>
                /// <para>
-               /// Sends the error information to <see cref="LogLog"/>'s Error 
method.
+               /// Invokes <see cref="FirstError"/> if and only if this is the 
first error or the first error after <see cref="Reset"/> has been called.
                /// </para>
                /// </remarks>
                public void Error(string message, Exception e, ErrorCode 
errorCode) 
                {
                        if (m_firstTime)
                        {
-                               m_enabledDate = DateTime.Now;
-                               m_errorCode = errorCode;
-                               m_exception = e;
-                               m_message = message;
-                               m_firstTime = false;
-
-                               if (LogLog.InternalDebugging && 
!LogLog.QuietMode)
-                               {
-                                       LogLog.Error(declaringType, "[" + 
m_prefix + "] ErrorCode: " + errorCode.ToString() + ". " + message, e);
-                               }
+                FirstError(message, e, errorCode);
                        }
                }
 
-               /// <summary>
+        /// <summary>
+        /// Log the very first error
+        /// </summary>
+        /// <param name="message">The error message.</param>
+        /// <param name="e">The exception.</param>
+        /// <param name="errorCode">The internal error code.</param>
+        /// <remarks>
+        /// <para>
+        /// Sends the error information to <see cref="LogLog"/>'s Error method.
+        /// </para>
+        /// </remarks>
+        public virtual void FirstError(string message, Exception e, ErrorCode 
errorCode) {
+            m_enabledDate = DateTime.Now;
+            m_errorCode = errorCode;
+            m_exception = e;
+            m_message = message;
+            m_firstTime = false;
+
+            if (LogLog.InternalDebugging && !LogLog.QuietMode) {
+                LogLog.Error(declaringType, "[" + m_prefix + "] ErrorCode: " + 
errorCode.ToString() + ". " + message, e);
+            }
+        }
+
+        /// <summary>
                /// Log an Error
                /// </summary>
                /// <param name="message">The error message.</param>
                /// <param name="e">The exception.</param>
                /// <remarks>
-               /// <para>
-               /// Prints the message and the stack trace of the exception on 
the standard
-               /// error output stream.
-               /// </para>
-               /// </remarks>
+        /// <para>
+        /// Invokes <see cref="FirstError"/> if and only if this is the first 
error or the first error after <see cref="Reset"/> has been called.
+        /// </para>
+        /// </remarks>
                public void Error(string message, Exception e) 
                {
                        Error(message, e, ErrorCode.GenericFailure);
@@ -139,11 +152,10 @@ namespace log4net.Util
                /// </summary>
                /// <param name="message">The error message.</param>
                /// <remarks>
-               /// <para>
-               /// Print a the error message passed as parameter on the 
standard
-               /// error output stream.
-               /// </para>
-               /// </remarks>
+        /// <para>
+        /// Invokes <see cref="FirstError"/> if and only if this is the first 
error or the first error after <see cref="Reset"/> has been called.
+        /// </para>
+        /// </remarks>
                public void Error(string message) 
                {
                        Error(message, null, ErrorCode.GenericFailure);


Reply via email to