【发布时间】:2016-05-12 01:28:26
【问题描述】:
我遇到了这个链接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/)跟踪源在需要通过侦听器进行跟踪时调用以下方法。
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/Data/Transfer 方法在内部调用 Write/WriteLine方法)由自定义跟踪侦听器的作者(在 codeproject.com 的第一个链接中)。我想测试这个自定义侦听器以查看它的行为方式。但在现实生活中,我不知道跟踪源如何调用那些 TraceEvent(具有多个重载)和 TraceTransfer() 方法来跟踪自定义侦听器。虽然我知道我可以创建一个跟踪源实例
TraceSource ts = new TraceSource("myApp");
ts.Listeners.Add(new DBTraceListener);
并向其添加自定义侦听器(如上面的代码),但问题仍然在于如何跟踪源调用 TraceEvent/TraceTransfer 方法(用 DBTraceListener 编写)来跟踪自定义侦听器。
换句话说,我不知道如何在我的应用程序中使用此自定义侦听器来记录跟踪。任何帮助将不胜感激。
【问题讨论】: