2016-01-10 4 views
9

私はASP.NET MVC Webサイトを持っており、Application Insightsを実装しています。次のように今、私はトレースイベントをログに記録:あなたが見ることができるように、これはすべてのトレースにTelemetryClientの単一の静的インスタンスを維持するApplication InsightsでTelemetryClientの静的インスタンスを使用する

private static TelemetryClient _APM; 
private static TelemetryClient APM 
{ 
    get 
    { 
     if (_APM == null) { _APM = new TelemetryClient(); } 
     return _APM; 
    } 
} 

public static void Trace(string Message) 
{ 
    APM.TrackTrace(Message); 
} 

。これは私たちがクライアントを使用する方法ですか?あるいは、各ログに対してTelemetryClientの新しいインスタンスを作成する予定ですか?あなたがすべきthe docsによる

答えて

7

は...あなたのアプリの各モジュールのためにTelemetryClientのインスタンスを使用します。たとえば、Webサービスに1つのTelemetryClientを入れて、着信HTTPリクエストを報告し、ミドルウェアクラスでビジネスロジックイベントを報告することができます。

ログごとに新しいテレメトリクライアントを作成するのはおそらく高価なので、アプリケーションの構造によっては、あなたの投稿に記述したシングルトンパターンを使用するのが正しいでしょう。

+0

完璧!それはまさに私が探していたものです! – William

+11

これを行うことはできますが、サーバアプリケーションやASP.Netの場合は静的な 'TelemetryClient'を使用したくないかもしれません**。静的なシングルトンを使用する場合、遠隔測定(ユーザ、セッション、操作)で記録されたコンテキストフィールドの一部はすべて一度設定されます。新しいテレメトリクライアントを使用すると、asp.netパイプラインからuser/session/etcを継承します(これにより、トレースを見ているときの状況を診断できます)。ポータルでは、トレースが発生したときと同じセッションですべてのテレメトリを見ることができます。またはasp.net要求によってトレースが発生しました。 –

関連する問題