10

コードで TelemetryClient (v0.17.0.576) を直接使用していますが、最後に Flush を手動で呼び出した場合にのみ Azure にデータをプッシュできるように見えますが、これは間違っていると感じています。ここで何か不足していますか?

var configuration = TelemetryConfiguration.CreateDefault();
configuration.InstrumentationKey = "KEY";
var client = new TelemetryClient(configuration);

for (int i = 0; i < 10; i++)
{
   log.Information("Loop: {0} {1}", i, value);

   client.Track(new TraceTelemetry(value));
}
client.Flush();
4

4 に答える 4

10

パフォーマンス上の理由から、Application Insights SDK はテレメトリをバッチ処理し、チャンクで送信します。これを実際に確認するには、Flush 呼び出しを Thread.Sleep (70000) の呼び出しに置き換えることができます。アプリが終了すると、AI にアップロードされたインストルメンテーションが表示されます。

于 2015-06-19T00:49:34.307 に答える
1

Mario Hewardtの答えに追加します。永続化チャネルを使用する場合:

TelemetryConfiguration.Active.TelemetryChannel = new PersistenceChannel();

Flush()同期です(したがって、スレッドを任意の時間スリープさせる必要はありません)。Flush()これには、Application Insights に接続できない場合にテレメトリ データをローカル ファイルに保存できるという利点もあります。このデータは、接続が良好な状態で次に呼び出されたときに送信されます。

于 2016-03-10T17:58:39.453 に答える