Log4net
  1. Log4net
  2. LOG4NET-283

OnlyOnceErrorHandler is not subclass-friendly

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.2.10
    • Fix Version/s: 1.2.12
    • Component/s: Core
    • Labels:
      None
    • Environment:
      Windows 7, IIS 7, .Net 3.5, C#

      Description

      If you ever try to use the ErrorHandler attribute with a custom error handler, it won't write out the messages. For example:

      <appender name="Database_Appender" type="log4net.Appender.AdoNetAppender">
      <errorHandler type="CHO.Next.Global.LogWriterErrorHandler, CHO.Next.Global" />

      Where the class is defined as:

      public class LogWriterErrorHandler : OnlyOnceErrorHandler
      {

      public new void Error(string message)

      { Error(message, null); }

      public new void Error(string message, Exception e)

      { Error(message, e, ErrorCode.GenericFailure); }

      public new void Error(string message, Exception e, ErrorCode errorCode)

      { // write to a file here }

      }

      This was specified as a fix on a few posts like this http://www.mail-archive.com/log4net-user@logging.apache.org/msg04378.html and there hasn't been anything to correct it.

      The reason this won't work is that Error is not virtual. Although the LogWriterErrorHandler is instantiated and the constructor is called, when the appender makes a call to this.ErrorHandler.Error, it calls the base class of OnlyOnceErrorHandler and not LogWriterErrorHandler.

      I would recommend you make the Error methods in AppenderSkeleton virtual so that they can be overriden. Otherwise, what is the value of even having the ErrorHandler attribute available on the appender?

        Activity

          People

          • Assignee:
            Unassigned
            Reporter:
            Randar Puust
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development