2012-07-12 74 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()); 
} 

希望有幫助,以防萬一誰有同樣的問題!