public static void Fail(string)
public static void Fail(string, string)
Fail方法产生一个无条件断言。它的有些行为有点像Assert方法,但是他不需要任何处理条件。
带有简单条件的失败条件不能被选中那么用这个方法。下边的例子是这种异常的处理情形:
try
{
throw new Exception(“Sample Exception”);
}
catch(Exception Ex)
{
Trace.Fail(“Exception caught”, Ex.Message);
}
pubic static void Write(object)
public static void Write(string)
public static void Write(object, string)
public static void Write(string,string)
Trace类可以在不产生任何条件的情况下写入跟踪信息。比如信息输出到作为跟踪信息的接收者的设备中。用write方法执行输出。
Write方法可以建立作为对象或者字符串的描绘信息。以前的案例中,object.ToString被呼叫执行。有其他三个方法可以执行类似的行为:writeline输出行,writeif-条件信息,writelineif输出一行条件信息。
Write方法的第二个参数指定将要写入信息前的分类(比如一个字符串)
输出被注册为侦听器。侦听器是可以输出跟踪信息到一些设备的对象。注意Assert和Fail方法经常输出错误信息到窗体或者控制台,不管那个侦听器被选中。这类对象必须继承TraceListener类,他有以下重要的方法:
public virtual void Fail(string)
public virtual void Fail(string,string)
public virtual void Flush(string)
public virtual void Write(object)
public abstract void Write(string)
public virtual void Write(object,string)
public virtual void Write(string,string)
public virtual void WriteLine(object)
public Virtual void WriteLine(string)
public virtual void writeLine(object,string)
public virtual void WriteLine(string,string)
--------------------------------------------------------------------------------------------
Fail方法不能阻止应用程序运行,他们仅仅输出错误信息。Write和WriteLine方法写入一个消息。他们不同之处仅仅在于后者输出执行后再输出一行。最后,Flush方法刷新缓存。Flush方法对跟踪信息输出的设备有作用(例如,流)。你可以使用自动刷新—每个信息后都自动刷新侦听者。可以在配置文件里面配置:
<configuration>
<stream.diagnostics>
<trace autoflush = “false” />
</stream.diagnostics>
</configuration>
正如你看到的,如果你创建自己的倾听者,需要至少实现write(string)和writeline(string)方法(这些方法是抽象方法)。
微软提供三种跟踪侦听者:DefaultTraceListener,EventLogTraceListener和TextWriteTraceLister.。第一个侦听者有缺省的方法(如果应用程序在命令行的环境下运行,那么输出信息到控制台。如果应用程序在调试情况下,输出到窗口)。第二个侦听者输出信息到指定事件日志中(基于nt技术—winnt,2k,xp或者.net)。第三个倾听者输出文本到流中。
活动倾听者列表可以在编程中设置或者在配置文件中。缺省包括DefaultTraceListener.
编程改变活动倾听者列表,要管理倾听者集合(通过添加和删除方法)。配置文件中管理倾听者,你要用下边的语法:
<configuration>
<system.diagnostics>
<trace autoflust=”false” indentsize = 4>
<listeners>
<add name=”myListener” type=”System.Dianostics.TextWriterTraceListener, system”
initializeData = “c:\MyListener.log”/>
<remove type = “System.Diagnostics.DefaultTraceListener,System”/>
</listeners>
</trace>
</system.dianostics>
</configuration>
InitializeDat参数是传递到构造器的的字符串参数(指定EventLogTraceListener侦听者事件日志)。
侦听者很熟悉创建应用程序使用侦听者输出跟踪信息。代码很简单:
//Trace listeners demo
//
//purpose:To demonstrate how to use listeners
using System;
using System.Diagnostics;
namespace Assertion
{
class Application
{
[STAThread]
static voidMain(string[] args)
{
Trace.WriteLine(“Calling WriteLine method”, “Trace Listeners demo”);
Trace.Flush();
}
}
}
这些代码还不够,我们必须创建一个配置文件来设置侦听者:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<remove type="System.Diagnostics.DefaultTraceListener"/>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener"
initializeData="myListener.log" />
<add name="myListenerEventLog" type="System.Diagnostics.EventLogTraceListener"
initializeData="Application" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
这个配置文件删除了缺省侦听者加入两个自定义侦听者:第一个输出信息到文本文件,第二个输出到事件日志中。对于第一个侦听者initializeData属性指定输出数据的文件,第二侦听者记录事件到事件日志。
运行程序。检查第一个侦听者,可以看到myListener.log文件,它包含以下信息:Tracing listeners Demo:Calling WriteLine Method