我正在使用Azure诊断跟踪记录消息。配置是每分钟将记录的数据传输到Azure存储表。
在测试设置时,我发现在出现非手动异常的情况下,以前的跟踪数据会消失。
例如:
Trace.WriteLine("T1");
Trace.WriteLine("T2");
Trace.WriteLine("T3");这将在一分钟后显示在Azure表中
Trace.WriteLine("T1");
Trace.WriteLine("T2");
Trace.WriteLine("T3");
throw new TimeoutException();由于异常,这将不会记录数据。
我的印象是诊断应该持久化数据,为什么会发生这种情况?
发布于 2012-04-04 05:47:39
您需要调用
Trace.Flush();以确保数据持久化。跟踪信息缓冲在内存中,异常会导致该信息在进入Azure表传输过程可以拾取的诊断区域之前丢失。
您还可以在配置文件中设置autoflush属性,以确保在每次写入后自动刷新跟踪数据:
<system.diagnostics>
<trace autoflush="true">
...
</trace>
</system.diagnostics>https://stackoverflow.com/questions/10001894
复制相似问题