的替代目的地我是一個相對較新的.net世界,我有一個解決方案,其中有數百個Debug.Writeline和Debug.Write。 我需要將消息發送到文本文件和數據庫,而不是傳統的輸出。如何連接Debug.Writeline()和Debug.Write()
替換所有Debug.XXX行並將這些特定消息發送到我的目標是枯燥且不推薦的任務。
那麼我應該如何連接另一個目的地?
一種方法是重寫Debug.Write()功能,該功能不起作用。
好心幫我,在此先感謝
的替代目的地我是一個相對較新的.net世界,我有一個解決方案,其中有數百個Debug.Writeline和Debug.Write。 我需要將消息發送到文本文件和數據庫,而不是傳統的輸出。如何連接Debug.Writeline()和Debug.Write()
替換所有Debug.XXX行並將這些特定消息發送到我的目標是枯燥且不推薦的任務。
那麼我應該如何連接另一個目的地?
一種方法是重寫Debug.Write()功能,該功能不起作用。
好心幫我,在此先感謝
可以繼承自己TraceListener
:
public class MyTraceListener : TraceListener
{
// called (in debug-mode) when Debug.Write() is called
public override void Write(string message)
{
// handle/output "message" properly
}
// called (in debug-mode) when Debug.WriteLine() is called
public override void WriteLine(string message)
{
// handle/output "message" properly
}
}
然後,您需要註冊這個類的一個實例(使用Trace.Listeners.Add()
:
var myListener = new MyTraceListener();
Trace.Listeners.Add(myListener);
現在所有致電Debug.Write()
a nd Debug.WriteLine()
被轉發到您的MyTraceListener
實例的相應方法。 注意但是,這隻發生在調試版本中。在RELEASE版本中,對Debug.Write()
和Debug.WriteLine()
的調用不會執行任何操作。
感謝真正有幫助我只需要在Debug版本中使用,但是由於我的經驗不足,我有疑問,只創建一個示蹤器實例將解決包含10個以上項目的整個解決方案中的問題?如果是的話,那麼可能是創建實例的最佳位置。對不起,如果被告知某事超出 –
@ManojKalluri是的,每**進程**一個監聽器就足夠了(無論該進程加載了多少個程序集)。在哪裏放置代碼取決於你的解決方案架構,我不能告訴你。 –
請注意,在RELEASE-build中,所有對「Debug.WriteLine」及其兄弟的調用均被**刪除。 –