1

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

在测试设置时,我发现如果出现未经处理的异常,之前的跟踪数据就会消失。

例如:

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

这将在一分钟后显示在 Azure 表中

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

由于异常,这不会记录数据。

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

4

1 回答 1

1

你需要打电话给

Trace.Flush();

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

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

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