0

我希望能够将我的应用程序的所有控制台输出记录到文本文件中。我已经实现了 ConsoleTraceListener 和 TextWriterTraceListener,如以下帖子中所述:将 控制台输出镜像到文件

这适用于所有正常的控制台输出。但是,我还希望 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);
}
4

1 回答 1

0

为了任何有同样问题的人的利益,这就是我最终解决问题的方法:

我基本上实现了一个异常处理程序并将 Trace.WriteLine() 放在代码的 catch 部分中。例如:

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

希望对您有所帮助,以防万一有人遇到同样的问题!

于 2012-07-16T22:16:31.673 回答