2016-02-03 34 views
1

我遇到過此鏈接http://www.codeproject.com/Articles/447238/Advanced-Tracing#_comments。作者在創建一個記錄到數據庫的自定義偵聽器方面做得相當不錯。在研究跟蹤/日誌記錄時,我從中讀取(從https://blogs.msdn.microsoft.com/bclteam/2005/09/20/a-tracing-primer-part-ii-b-mike-rousos/)跟蹤源在需要跟蹤偵聽器時調用以下方法。如何使用自定義跟蹤偵聽器記錄.net中的痕跡

void TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, int id) 
    void TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, int id, string message) 
    void TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, int id, string format, params object[] args) 
    void TraceData(TraceEventCache eventCache, String source, TraceEventType eventType, int id, object data) 
    void TraceData(TraceEventCache eventCache, String source, TraceEventType eventType, int id, params object[] data) 
    void TraceTransfer(TraceEventCache eventCache, String source, int id, string message, Guid relatedActivityId) 

而且幾乎所有這些方法(不包括1或2)已被重寫(所有這些都是公開的,只是TraceTransfer調用WriteLine方法,因爲在MSDN博客說,國內這些TraceEvent /數據/傳輸方法調用Write/WriteLine方法)由自定義跟蹤監聽器的作者(在codeproject.com的第一個鏈接中)。我想測試這個自定義偵聽器來查看它的行爲。但在現實生活中,我不知道跟蹤源如何調用TraceEvent(具有多重過載)和TraceTransfer()方法來跟蹤自定義偵聽器。雖然我知道我可以創建跟蹤源的實例作爲

TraceSource ts = new TraceSource("myApp"); 
ts.Listeners.Add(new DBTraceListener); 

,並添加自定義偵聽到它(如上面的代碼),但問題是在如何將跟蹤源調用TraceEvent/TraceTransfer方法(用DBTraceListener編寫)跟蹤自定義偵聽器。

換句話說,我不知道如何在我的應用程序中使用此自定義偵聽器來記錄痕跡。任何幫助將不勝感激。

回答

0

添加跟蹤偵聽器的簡單方法是使用Trace.Listeners.Add()。例如,要添加一個TextWriterTraceListener

var listener = new TextWriterTraceListener("e:\\blah.txt"); 
Trace.Listeners.Add(listener); 
Trace.AutoFlush = true; 
Trace.WriteLine("Test!"); 
+0

這不是我正在尋找的。我的問題是如何trasource監聽器類的調用tarceevent/tracetransfer方法。 – user2913184

+0

您所做的任何跟蹤調用都應該發送給所有附加的偵聽器。一旦你添加了'DBTraceListener',你可以嘗試Trace.TraceError(),Trace.TraceWarning()等等。我認爲Trace類在內部調用TraceEvent,TraceData和TraceTransfer方法。 –

+0

那麼這就是我在閱讀MSDN博客(我的問題中給出的鏈接)時所瞭解的內容,但仍不確定TraceSource實例如何在偵聽器上調用這些內部方法。 – user2913184

相關問題