2016-05-17 55 views
0

我想使用异常过滤器向文件添加异常。 这是我的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

你可以抓住这样的例外: 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;