2017-07-19 5 views
0

私はasp.net mvcアプリケーションを使用しています。だから私はどこに私のロガーコードを使用することができますかを知る必要があります。私のコードにロギングの仕組みを置くことができます

私はerrosを記録するインターフェースを持っています。私は自分のコードにこのインタフェースを実装しています。

public interface ILogger { void Log(Exception exception); } 

私はController、ProductService、ProductRepositoryクラスを持っています。

public interface ProductController: ApiController{ 

    public IHttpActionResult Get(){ 
      try { 
       productService.GetProducts(); 
      }catch(Exception e){ 
       logger.Log(e); // 1-Should I use logging in here? 
      } 
    } 
} 

製品サービス;

public class ProductService{ 
    public IEnumerable<Product> GetProducts(){ 
      try { 
       productRepository.GetAll(); 
      }catch(Exception e){ 
       logger.Log(e); // 2-Should I use logging in here? 
      } 
    } 
} 

リポジトリにあります。

public class ProductRepository{ 
    public IEnumerable<Product> GetAll(){ 
      try { 

      }catch(Exception e){ 
       logger.Log(e); // 3-Should I use logging in here? 
      } 
    } 
} 

ロギングコードはどこで使用できるのか判断できませんでした。または、どこにでもログインを追加します。

+0

MVC 3層アーキテクチャを使用する必要があります。ロギングの責任を負うリポジトリを参照するコントローラからサービスを呼び出さなければなりません。 –

答えて

0

カスタム例外フィルタを実装できます。

public class LogExceptionAttribute : ExceptionFilterAttribute 
{ 
    public ILogger logger { get; set; } 
    public LogExceptionAttribute(ILogger logger) 
    { 
     this.logger = logger; 
    } 

    public override void OnException(HttpActionExecutedContext actionExecutedContext) 
    { 
     var exception = actionExecutedContext.Exception; 
     logger.Log(actionExecutedContext.Exception); 

     // You could also send client a message about exception. 
     actionExecutedContext.Response = 
       actionExecutedContext.Request.CreateResponse(HttpStatusCode.InternalServerError, exception.Message); 
    } 
} 

グローバルレベルで登録します。

GlobalConfiguration.Configuration.Filters.Add(new LogExceptionAttribute(Logger)); 

このフィルタは、コントローラメソッドからスローされた未処理の例外に対して呼び出されます。

+0

サービスやリポジトリの実装で例外が発生した場合、私はExceptionFilterを捕捉します。しかし、私は例外についてユーザーフレンドリーなメッセージを返すでしょう。 – barteloma

+0

それは簡単です、私は私の答えを更新しました。 –

関連する問題