使用异常过滤器记录异常

时间:2016-05-17 10:19:05

标签: c# asp.net-mvc

我想使用异常过滤器向文件添加例外。 这是我的ILog界面。

public interface ILog
{
    void Log(Importance importance, Func<string> message);

    void Log(Importance importance, Func<string> message, Exception   exception);
}

如何在下面的OnExceptipn方法中记录异常?

public class LoggingExceptionFilter : ExceptionFilterAttribute
{
    private readonly ILog _log;

    public LoggingExceptionFilter(ILogFactory logFactory)
    {
        _log = logFactory.Create("LoggingExceptionFilter");
    }

    public override void OnException(ExceptionContext context)
    {
        // what to do here?
    }
}

1 个答案:

答案 0 :(得分:1)

你可以像这样抓住异常: Exception ex = context.Exception; 然后使用您的库记录异常。

在此之后您想要做的其他事情取决于您 - 是否要继续执行,或者向客户端返回错误。例如,我在我的Web API项目中有这个片段,以返回适当的HTTP错误代码:

HttpStatusCode statuscode;

if (context.Exception is HttpResponseException)
{
    var HTTPex = (HttpResponseException)context.Exception;
    statuscode = HTTPex.Response.StatusCode;
}
else
{
    statuscode = HttpStatusCode.InternalServerError;
} 

context.response = response;