如何使用自定义跟踪侦听器记录.net

时间:2016-02-03 01:46:21

标签: c# .net logging tracing

我遇到了这个链接http://www.codeproject.com/Articles/447238/Advanced-Tracing#_comments。作者在创建一个记录到DataBase的Custom侦听器方面做得相当不错。在研究有关跟踪/日志记录的更多内容时,我(从此处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编写)来跟踪自定义侦听器。

换句话说,我不知道如何在我的应用程序中使用此自定义侦听器来记录跟踪。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

An easy way to add a trace listener is using Trace.Listeners.Add(). For example, to add a TextWriterTraceListener:

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