2012-04-03 69 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>