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