ErrorHandler does not work with custom class
--------------------------------------------
Key: LOG4NET-283
URL: https://issues.apache.org/jira/browse/LOG4NET-283
Project: Log4net
Issue Type: Bug
Components: Appenders
Affects Versions: 1.2.10
Environment: Windows 7, IIS 7, .Net 3.5, C#
Reporter: Randar Puust
Fix For: 1.2.11
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/[email protected]/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?
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira