2016-05-17 66 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;