2013-08-21 6 views
8

私は、操作の経過時間を測定してダッシュボードに公開できるServiceStack IPluginインターフェイスに基づいてプラグインを作成しようとしています。コードそのものは非常に簡単で、Request Loggerのいくつかの概念に基づいてそれを試みました。ServiceStackのプラグインでIRequestContextにアクセスする

このロガーでは、デフォルトのServiceRunnerクラス内に追加されたStopWatchが使用されますが、要求ロガーの設定時にのみ使用されます。

カスタムServiceRunnerがすでにあり、StopWatchがそこで初期化されていますが、プラグインが自己完結型ではないため、この方法は最適ではありません。

私の最大の問題は、明らかにIRequestContextにアクセスできないことです。プラグインがこのコンテキストにアクセスする方法や、ServiceRunnerに依存するのではなく、シンプルなプラグインの中でリクエストを実行する時間を測定する他の方法はありますか?

ありがとうございます!

+0

は、あなたのIpluginのIMPLとの質問を更新することができますか? –

答えて

1

要求の開始時刻をRequestFilterに格納し、ResponseFilterで現在の時刻から開始時刻を差し引いた時刻を計算しますか?

これはプラグインでも実行できます。

ここにいくつかの擬似コードだ...

appHost.RequestFilters.Add((req, res, obj) => 
    { 
     if(!req.Items.ContainsKey("begin-time")) 
      req.Items.Add("begin-time", DateTime.Now); 
     else 
      req.Items[ "begin-time" ] = DateTime.Now; 
    } 
); 

appHost.ResponseFilters.Add((req, res, i) => 
    { 
     var beginTime = (DateTime)req.Items[ "begin-time" ]; 

     var elapsed = DateTime.Now - beginTime; 
    } 
); 
関連する問題