2012-07-12 75 views
0

我希望能够将我的应用程序的所有控制台输出记录到文本文件中。 我已经实现了一个ConsoleTraceListener和TextWriterTraceListener会在下面的描述后: Mirroring console output to a file将StdError流镜像到日志文件

这适用于所有正常控制台输出。不过,我还想让StdError流出现在日志文件中。我测试了一些简单的代码,最终抛出了DivideByZeroException(代码如下)。通过上述文章中提出的实现,错误消息显示在控制台中,但不在日志文件中。

有没有人有如何实现这一目标的建议?请注意我不想重定向Stderror流。理想情况下,错误消息将显示在控制台和日志文件中。

在此先感谢您的任何建议!

Trace.Listeners.Clear(); 
string logfilePath = @"Q:\logfile.txt"; 
TextWriterTraceListener log_tracer = new TextWriterTraceListener(logfilePath); 
log_tracer.TraceOutputOptions = TraceOptions.ThreadId | TraceOptions.DateTime; 
ConsoleTraceListener console_tracer = new ConsoleTraceListener(false); 
console_tracer.TraceOutputOptions = TraceOptions.DateTime; 
Trace.Listeners.Add(log_tracer); 
Trace.Listeners.Add(console_tracer); 
Trace.AutoFlush = true; 

Trace.WriteLine("HELLO THIS IS TO TEST THE TRACE LISTENER"); 
for (int a = 5; a >= 0; a--) { 
    Trace.WriteLine(50/a); 
} 
+0

如何显示您使用DivideByZeroException引发的代码块.. – MethodMan 2012-07-12 19:35:11

回答

0

对于同样的问题,任何人的利益,这里是我是如何结束的工作我的方式解决该问题:

我基本落实异常处理程序并放置在Trace.WriteLine()内抓住部分代码。例如:

try { 
    // Code that can potentially create StdError message 
} 
catch (Exception ex) { 
    Trace.WriteLine(ex.ToString()); 
} 

希望有帮助,以防万一谁有同样的问题!