2016-02-03 35 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

相关问题