诊断跟踪数据在异常后消失

时间:2012-04-03 21:46:30

标签: asp.net .net azure system.diagnostics azure-diagnostics

我正在使用Azure诊断跟踪来记录消息。 配置是每分钟将记录的数据传输到Azure存储表。

在测试设置时,我发现在未处理异常的情况下,先前的跟踪数据会消失。

例如:

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

一分钟后,它将显示在Azure表中

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

由于例外,这不会记录数据。

我的印象是诊断应该保留数据,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

您需要拨打

Trace.Flush();

确保数据持久化。跟踪信息缓存在内存中,异常导致信息在进入可由Azure表传输过程拾取的诊断区域之前丢失。

您还可以在配置文件中设置autoflush属性,以确保在每次写入后自动刷新跟踪数据:

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