2016-07-08 10 views
1

すべてのWCFメソッドでは、メソッドが呼び出された直後にログメッセージが必要になり、メソッドが終了した後に別のログメッセージが必要になります。たとえば、コードは次のようになります。WCFでの一般的なロギングメソッドの名前とユーザー

public string Method1() 
{ 
    try { 
    Log("Method1 start"); 
    /*implementation is here*/ 
    } 
    finally 
    { 
    Log("Method1 end"); 
    } 
} 

2つのログには、WCFメソッド名を含める必要があります。これをすべてのWCFメソッドに追加する必要があります。これを行うジェネリックメソッドを作成することは可能なのでしょうか?すべてのWCF呼び出しでこれを繰り返す必要はありません。

答えて

1

あなたが探しているものは、アスペクト指向プログラミングと呼ばれています。

AOPはさまざまな味があり、ロギングのようなクロスカッティングの問題を処理します。

  • WCF傍受(@Giladの回答を参照してください)
  • のIoC傍受(hereより多くを参照してください、WCFで動作するように取得するには少しトリッキーです)
  • PostSharp

PostSharpは非常にいいですビルド時にAOPを実装するツールですが、WCFとIoCの代行受信は実行時に実行されます。しかし、一般的な考え方は同じです。 続きを見るHere

1

あなたが探しているのはInterceptorsです。 WCFを使用すると、要求処理のさまざまな段階でインターセプタを追加できます。

あなたの例のように見えるインターセプタを実装します。このSO question

{ 
    try 
    { 
     Log(string.Format("Entering method: {0}",/*function name*/)); 
     //proceed with execution 
     Log(string.Format("Exiting method: {0}",/*function name*/)); 
    } 
    catch (Exception exception) 
    { 
     Log(string.Format("Exiting method {0} with failure: {1}:,/*function name*/,exception.ToString()); 
} 

    でメソッド名の外観を取得するには :私はあなたのインターセプタ機能は次のようになりますことをrecommentたいinterceptors


    については

  • 私が普通にやっていることは、入力パラメータのメッセージ印刷値のEnteringですersがある場合はExitingにも戻り値がある場合はそれも印刷します。ログの読書をとても大切にします。
関連する問題