我没有看到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