我正在使用Azure诊断跟踪来记录消息。 配置是每分钟将记录的数据传输到Azure存储表。
在测试设置时,我发现在未处理异常的情况下,先前的跟踪数据会消失。
例如:
Trace.WriteLine("T1");
Trace.WriteLine("T2");
Trace.WriteLine("T3");
一分钟后,它将显示在Azure表中
Trace.WriteLine("T1");
Trace.WriteLine("T2");
Trace.WriteLine("T3");
throw new TimeoutException();
由于例外,这不会记录数据。
我的印象是诊断应该保留数据,为什么会发生这种情况?
答案 0 :(得分:1)
您需要拨打
Trace.Flush();
确保数据持久化。跟踪信息缓存在内存中,异常导致信息在进入可由Azure表传输过程拾取的诊断区域之前丢失。
您还可以在配置文件中设置autoflush
属性,以确保在每次写入后自动刷新跟踪数据:
<system.diagnostics>
<trace autoflush="true">
...
</trace>
</system.diagnostics>