2012-04-03 31 views
1

我正在使用Azure診斷跟蹤記錄消息。 配置是將記錄的數據每分鐘傳輸到Azure存儲表。診斷跟蹤數據在異常後消失

在測試安裝程序時,我發現如果發生非常規異常,則以前的跟蹤數據將消失。

例如:

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

這將在Azure Table中顯示一分鐘

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

此之後將無法登錄,因爲異常的數據。

我的印象是診斷應該堅持數據,爲什麼會發生這種情況?

回答

1

你需要撥打電話到

Trace.Flush(); 

,以確保數據的持久化。跟蹤信息被緩存在內存中,並且異常會導致該信息甚至在它進入診斷區域之前丟失,Azure表傳輸過程可能會獲取該信息。

您還可以設置autoflush屬性在您的配置文件,以確保跟蹤數據每次寫入後自動刷新:

<system.diagnostics>  
    <trace autoflush="true"> 
    ... 
    </trace> 
</system.diagnostics>