Is there any way of overriding the error message logged by Elmah without duplicating it?
I have a custom exception class:
public class BusinessException : Exception
{
    // detailed error message used for logging / debugging
    public string InternalErrorMessage { get; set; }
    public BusinessException(string message, string internalMessage)
        :base(message)
    {
        InternalErrorMessage = internalMessage;
    }
}
From the code, i throw an exception like this:
string detailedErrorMessage = string.Format("User {0} does not have permissions to access CreateProduct resource", User.Identity.Name);
throw new BusinessException("Permission denied", detailedErrorMessage);
When Elmah logs the error, it only logs Permission denied message. However, i need to log the InternalErrorMessage property of the exception instead.
I've tried to create a custom HandleErrorAttribute to do this, but this duplicates the exceptions logged:
public class ErrorHandleAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        if (filterContext.ExceptionHandled == true)
            return;
        Exception exception = filterContext.Exception;
        BusinessException businessException = exception as BusinessException;
        if (businessException != null)
        {
            ErrorSignal.FromCurrentContext().Raise(new Exception(businessException.InternalErrorMessage, exception));
        }
    }
}

 
     
     
    