通常,您應該避免將診斷信息直接寫入控制檯,事件日誌,MSMQ或其他應用程序代碼中的其他位置。而是調用一個日誌API,並使用配置將輸出重定向到任何你想要的地方。
例如,您可以用Trace.WriteLine(*)替換所有的Console.WriteLine。然後,你可以通過修改應用程序的配置文件重定向輸出到控制檯,文件或其它地方:比如輸出到控制檯,使用ConsoleTraceListener,是這樣的:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="configConsoleListener"
type="System.Diagnostics.ConsoleTraceListener" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
調試時,你會得到你輸出到控制檯上 - 在客戶站點上,您將其配置爲將跟蹤輸出重定向到文件,事件日誌或類似內容。
更好的是,使用第三方日誌框架(我推薦Log4Net),它會給你比System.Diagnostics.Trace更多的選擇。 (*)Trace.Write/Trace.WriteLine與Debug.Write/Debug.WriteLine相同,只是後者只在定義DEBUG符號時編譯。因此,如果希望在發佈版本中提供輸出,請選擇「跟蹤到調試」。
來源
2008-10-14 16:52:13
Joe
使用Console.SetOut是一個足夠小的更改,可以獲得足夠的信息來確定服務的問題。 – 2008-10-14 16:04:09