跟踪由四部份组成。
1.跟踪源 TraceSource;
2.开关。用于打开或关闭跟踪事件。有三种开关。BooleanSwitch,TraceSwitch,SourceSwitch.boolean开关比较简单。后两种可以增加Level参数。可把开关的Level值定义为error,info,warring,verbose,off等。
3.侦听器
4.筛选器。
最简单的跟踪是只使用跟踪源和开关两个。代码如下:
测试代码:
class Program
{
static void Main(string[] args)
{
TraceSource tranceSource = new TraceSource("sample");
SourceSwitch SourceSwitch = new SourceSwitch("sample") { Level = SourceLevels.Error};
tranceSource.Switch = SourceSwitch;
tranceSource.TraceEvent(TraceEventType.Information, 0, DateTime.Now.ToString()+ "开始执行!");
people p = new people();
try
{
p.run();
}
catch (Exception ex)
{
tranceSource.TraceEvent(TraceEventType.Error, 0, ex.Message);
}
}
}
class people
{
public void run()
{
throw new Exception("is gone!");
}
}
跟踪输出:
sample Error: 0 : is gone!
通常把程序写入配置文件是最好的。因为可以不用重新编译程序就可以改变配置。从而可以实时查看程序运行中出现的问题。但由于.net程序是安装在很深的文档中。因此建议在程序界面对config进行更改。
在config配置文件如下:
<system.diagnostics>
<sources>
<source name="sample" switchName="sampleSwitch" switchType="System.Diagnostics.SourceSwitch">
</source>
</sources>
<switches>
<add name="sampleSwitch" value="Information"/>
</switches>
</system.diagnostics>
由上可知,定义简单的跟踪事件。需要两个类。一个跟踪源(traceSource),一个开关(SourceSwich)就可以了。但是它们的输出是在output中。当程序正式部署时,最好是要写一个文本文件中。因此需要使用侦听器。
将下面的配置加入到<source>元素中就可以输出到指定文件。
<listeners>
<add name="listence" type="System.Diagnostics.TextWriterTraceListener" traceOutputOptions="DateTime" initializeData="D:/d.txt"/>
</listeners>
注意在输出文本的方法中,写入information等要调用flush方法或者tranceSource.Close();