1

Azure Diagnostics Trace を使用してメッセージをログに記録しています。ログに記録されたデータを 1 分ごとに Azure Storage Table に転送する構成です。

セットアップをテストしているときに、未処理の例外が発生した場合、以前のトレース データが消えることがわかりました。

例えば:

 Trace.WriteLine("T1");
 Trace.WriteLine("T2");
 Trace.WriteLine("T3");

これは 1 分後に Azure テーブルに表示されます

 Trace.WriteLine("T1");
 Trace.WriteLine("T2");
 Trace.WriteLine("T3");
 throw new TimeoutException();

例外のため、これはデータを記録しません。

Diagnostics はデータを保持するべきだという印象を受けましたが、なぜそうなっているのでしょうか?

4

1 に答える 1

1

に電話する必要があります

Trace.Flush();

データが永続化されていることを確認します。トレース情報はメモリにバッファリングされ、例外により、Azure テーブル転送プロセスによって取得できる診断領域に入る前に、その情報が失われます。

またautoflush、構成ファイルでプロパティを設定して、すべての書き込み後に Trace データが自動的にフラッシュされるようにすることもできます。

<system.diagnostics>    
  <trace autoflush="true">
    ...
  </trace>
</system.diagnostics>
于 2012-04-03T21:47:39.403 に答える