我沒有看到TraceSource上的autoflush選項,就像跟蹤一樣。
有沒有辦法自動刷新,而不必在每次寫入後手動刷新?TraceSource - 在沒有配置文件的情況下將autoflush設置爲true?
順便說一句我正在使用TextWriterTraceListener作爲我的跟蹤源監聽器,而不是使用config xml。
我沒有看到TraceSource上的autoflush選項,就像跟蹤一樣。
有沒有辦法自動刷新,而不必在每次寫入後手動刷新?TraceSource - 在沒有配置文件的情況下將autoflush設置爲true?
順便說一句我正在使用TextWriterTraceListener作爲我的跟蹤源監聽器,而不是使用config xml。
內部TraceSource
使用AutoFlush
設置Trace
類的。例如。 TraceSource.TraceEvent
方法sources:
for (int j = 0; j < this.listeners.Count; j++)
{
TraceListener listener = this.listeners[j];
listener.TraceEvent(eventCache, this.Name, eventType, id, format, args);
if (Trace.AutoFlush)
{
listener.Flush();
}
}
因此,所有你需要做的,是集Trace.AutoFlush
爲true。順便說一句同樣是在MSDN指出:
跟蹤偵聽使用Trace類屬性的值 縮進,IndentSize,和自動沖洗格式化跟蹤輸出。
請試試!
TextWriterTraceListener listener = new TextWriterTraceListener(@"C:\MyFolder\Temp.log");
StreamWriter sw = listener.Writer as StreamWriter;
if (sw != null) sw.AutoFlush = true;
當你從複製粘貼的東西[其他網站](http://social.msdn.microsoft.com/Forums/vstudio/en-US/325e84cd-e2da-4c4e-8304-818a176e2a39/how-to-flush-tracesource-authomatically)其良好的添加鏈接和一些解釋 –
StreamWriter sw = File.AppendText(path);
traceSource.Listeners.Add(new TextWriterTraceListener(sw) { TraceOutputOptions = TraceOptions.DateTime });
感謝您的回答。爲了使它更有用,最好包含一些解釋,說明爲什麼你的代碼解決了OP的原始問題,甚至爲什麼它是比已發佈的答案更好的解決方案。 – Tom
謝謝你的工作 – erotavlas