DefaultTraceListener 类

定义

提供用于跟踪的默认输出方法和行为。

public ref class DefaultTraceListener : System::Diagnostics::TraceListener
public class DefaultTraceListener : System.Diagnostics.TraceListener
[System.Runtime.InteropServices.ComVisible(false)]
public class DefaultTraceListener : System.Diagnostics.TraceListener
type DefaultTraceListener = class
    inherit TraceListener
[<System.Runtime.InteropServices.ComVisible(false)>]
type DefaultTraceListener = class
    inherit TraceListener
Public Class DefaultTraceListener
Inherits TraceListener
继承
DefaultTraceListener
继承
DefaultTraceListener
属性

示例

下面的代码示例计算二项系数,这些系数是概率和统计信息中使用的值。 此示例使用 a 用于 DefaultTraceListener 跟踪结果和记录错误。 它创建一个新 DefaultTraceListener项,将其添加到 Trace.Listeners 集合中,并将属性设置为 LogFileName 命令行参数中指定的日志文件。

如果在处理输入参数时检测到错误,或者 CalcBinomial 函数引发异常,该方法 Fail 将记录并显示错误消息。 AssertUiEnabled如果该属性是false,错误消息也会写入控制台。 成功计算结果后, Write(String) 该方法会将 WriteLine(String) 结果写入日志文件。

WriteFailWriteLine方法会导致仅将跟踪信息写入到中DefaultTraceListener。 若要将跟踪信息写入集合中的所有Trace.Listeners侦听器,请使用类的FailTraceWriteWriteLine方法。

using System;
using System.Diagnostics;
using Microsoft.VisualBasic;

class Binomial
{

    // args(0) is the number of possibilities for binomial coefficients.
    // args(1) is the file specification for the trace log file.
    public static void Main(string[] args)
    {

        decimal possibilities;
        decimal iter;

        // Remove the original default trace listener.
        Trace.Listeners.RemoveAt(0);

        // Create and add a new default trace listener.
        DefaultTraceListener defaultListener;
        defaultListener = new DefaultTraceListener();
        Trace.Listeners.Add(defaultListener);

        // Assign the log file specification from the command line, if entered.
        if (args.Length>=2)
        {
            defaultListener.LogFileName = args[1];
        }

        // Validate the number of possibilities argument.
        if (args.Length>=1)

            // Verify that the argument is a number within the correct range.
        {
            try
            {
                const decimal MAX_POSSIBILITIES = 99;
                possibilities = Decimal.Parse(args[0]);
                if (possibilities<0||possibilities>MAX_POSSIBILITIES)
                {
                    throw new Exception(String.Format("The number of possibilities must " +
                        "be in the range 0..{0}.", MAX_POSSIBILITIES));
                }
            }
            catch(Exception ex)
            {
                string failMessage = String.Format("\"{0}\" " +
                    "is not a valid number of possibilities.", args[0]);
                defaultListener.Fail(failMessage, ex.Message);
                if (!defaultListener.AssertUiEnabled)
                {
                    Console.WriteLine(failMessage+ "\n" +ex.Message);
                }
                return;
            }
        }
        else
        {
            // Report that the required argument is not present.
            const string ENTER_PARAM = "Enter the number of " +
                      "possibilities as a command line argument.";
            defaultListener.Fail(ENTER_PARAM);
            if (!defaultListener.AssertUiEnabled)
            {
                Console.WriteLine(ENTER_PARAM);
            }
            return;
        }

        for(iter=0; iter<=possibilities; iter++)
        {
            decimal result;
            string binomial;

            // Compute the next binomial coefficient and handle all exceptions.
            try
            {
                result = CalcBinomial(possibilities, iter);
            }
            catch(Exception ex)
            {
                string failMessage = String.Format("An exception was raised when " +
                    "calculating Binomial( {0}, {1} ).", possibilities, iter);
                defaultListener.Fail(failMessage, ex.Message);
                if (!defaultListener.AssertUiEnabled)
                {
                    Console.WriteLine(failMessage+ "\n" +ex.Message);
                }
                return;
            }

            // Format the trace and console output.
            binomial = String.Format("Binomial( {0}, {1} ) = ", possibilities, iter);
            defaultListener.Write(binomial);
            defaultListener.WriteLine(result.ToString());
            Console.WriteLine("{0} {1}", binomial, result);
        }
    }

    public static decimal CalcBinomial(decimal possibilities, decimal outcomes)
    {

        // Calculate a binomial coefficient, and minimize the chance of overflow.
        decimal result = 1;
        decimal iter;
        for(iter=1; iter<=possibilities-outcomes; iter++)
        {
            result *= outcomes+iter;
            result /= iter;
        }
        return result;
    }
}
Imports System.Diagnostics

Module Binomial

    ' args(0) is the number of possibilities for binomial coefficients.
    ' args(1) is the file specification for the trace log file.
    Sub Main(ByVal args() As String)

        Dim possibilities As Decimal
        Dim iter As Decimal

        ' Remove the original default trace listener.
        Trace.Listeners.RemoveAt(0)

        ' Create and add a new default trace listener.
        Dim defaultListener As DefaultTraceListener
        defaultListener = New DefaultTraceListener
        Trace.Listeners.Add(defaultListener)

        ' Assign the log file specification from the command line, if entered.
        If args.Length >= 2 Then
            defaultListener.LogFileName = args(1)
        End If

        ' Validate the number of possibilities argument.
        If args.Length >= 1 Then

            ' Verify that the argument is a number within the correct range.
            Try
                Const MAX_POSSIBILITIES As Decimal = 99
                possibilities = Decimal.Parse(args(0))
                If possibilities < 0 Or possibilities > MAX_POSSIBILITIES Then
                    Throw New Exception( _
                        String.Format("The number of possibilities must " & _
                            "be in the range 0..{0}.", MAX_POSSIBILITIES))
                End If
            Catch ex As Exception
                Dim failMessage As String = String.Format("""{0}"" " & _
                    "is not a valid number of possibilities.", args(0))
                defaultListener.Fail(failMessage, ex.Message)
                If Not defaultListener.AssertUiEnabled Then
                    Console.WriteLine(failMessage & vbCrLf & ex.Message)
                End If
                Return
            End Try
        Else
            ' Report that the required argument is not present.
            Const ENTER_PARAM As String = "Enter the number of " & _
                "possibilities as a command line argument."
            defaultListener.Fail(ENTER_PARAM)
            If Not defaultListener.AssertUiEnabled Then
                Console.WriteLine(ENTER_PARAM)
            End If
            Return
        End If

        For iter = 0 To possibilities
            Dim result As Decimal
            Dim binomial As String

            ' Compute the next binomial coefficient and handle all exceptions.
            Try
                result = CalcBinomial(possibilities, iter)
            Catch ex As Exception
                Dim failMessage As String = String.Format( _
                        "An exception was raised when " & _
                        "calculating Binomial( {0}, {1} ).", _
                        possibilities, iter)
                defaultListener.Fail(failmessage, ex.Message)
                If Not defaultListener.AssertUiEnabled Then
                    Console.WriteLine(failMessage & vbCrLf & ex.Message)
                End If
                Return
            End Try

            ' Format the trace and console output.
            binomial = String.Format("Binomial( {0}, {1} ) = ", _
                            possibilities, iter)
            defaultListener.Write(binomial)
            defaultListener.WriteLine(result.ToString)
            Console.WriteLine("{0} {1}", binomial, result)
        Next
    End Sub

    Function CalcBinomial(ByVal possibilities As Decimal, _
                        ByVal outcomes As Decimal) As Decimal

        ' Calculate a binomial coefficient, and minimize the chance of overflow.
        Dim result As Decimal = 1
        Dim iter As Decimal
        For iter = 1 To possibilities - outcomes
            result *= outcomes + iter
            result /= iter
        Next
        Return result
    End Function
End Module

注解

此类的实例会自动添加到集合中Debug.ListenersTrace.Listeners。 显式添加第二 DefaultTraceListener 个会导致调试器输出窗口中出现重复的消息,以及断言的重复消息框。

默认情况下, WriteWriteLine 方法将消息发送到 Win32 OutputDebugString 函数和 Debugger.Log 方法。

默认情况下,当应用程序在用户界面模式下运行时,该方法 Fail 会显示一个消息框;它还使用 WriteLine发出消息。

备注

消息框 Assert 的显示和 Fail 方法调用取决于是否存在 DefaultTraceListenerDefaultTraceListener如果集合中Listeners不存在,则不显示消息框。 DefaultTraceListener可以通过对属性 () System.Diagnostics.Trace.Listeners.Clear() 调用Clear方法Listeners来删除该方法。 对于.NET Framework应用,还可以使用<clear>应用的配置文件中的元素和<remove>元素

必须启用跟踪或调试才能使用跟踪侦听器。 以下语法特定于编译器。 如果使用 C# 或Visual Basic以外的编译器,请参阅编译器的文档。

  • 若要在 C# 中启用调试,请在编译代码时将 /d:DEBUG 标志添加到编译器命令行,或添加到 #define DEBUG 文件顶部。 在Visual Basic中,将/d:DEBUG=True标志添加到编译器命令行。

  • 若要在 C# 中启用跟踪,请在编译代码时将 /d:TRACE 标志添加到编译器命令行,或添加到 #define TRACE 文件顶部。 在Visual Basic中,将/d:TRACE=True标志添加到编译器命令行。

对于.NET Framework应用,可以通过编辑对应于应用程序名称的配置文件来添加跟踪侦听器。 在此文件中,可以添加侦听器、设置其类型并设置其参数、删除侦听器或清除应用程序之前设置的所有侦听器。 配置文件的格式应类似于以下示例:

<configuration>  
<system.diagnostics>  
  <trace autoflush="false" indentsize="4">  
    <listeners>  
      <remove name="Default" />  
      <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\myListener.log" />  
    </listeners>  
  </trace>  
</system.diagnostics>  
</configuration>  

构造函数

DefaultTraceListener()

在将 DefaultTraceListener 属性值设置为其默认值的情况下,初始化 Name 类的新实例。

属性

AssertUiEnabled

获取或设置一个值,该值指示应用程序是否以用户界面模式运行。

Attributes

获取应用程序配置文件中定义的自定义跟踪侦听器特性。

(继承自 TraceListener)
Filter

获取或设置跟踪侦听器的跟踪筛选器。

(继承自 TraceListener)
IndentLevel

获取或设置缩进级别。

(继承自 TraceListener)
IndentSize

获取或设置缩进的空格数。

(继承自 TraceListener)
IsThreadSafe

获取一个值,该值指示跟踪侦听器是否是线程安全的。

(继承自 TraceListener)
LogFileName

获取或设置要在其中写入跟踪或调试消息的日志文件的名称。

Name

获取或设置此 TraceListener 的名称。

(继承自 TraceListener)
NeedIndent

获取或设置一个值,该值指示是否缩进输出。

(继承自 TraceListener)
TraceOutputOptions

获取或设置跟踪输出选项。

(继承自 TraceListener)

方法

Close()

在派生类中被重写时,关闭输出流以使它不再接收跟踪或调试输出。

(继承自 TraceListener)
CreateObjRef(Type)

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。

(继承自 MarshalByRefObject)
Dispose()

释放由 TraceListener 使用的所有资源。

(继承自 TraceListener)
Dispose(Boolean)

释放由 TraceListener 占用的非托管资源,还可以另外再释放托管资源。

(继承自 TraceListener)
Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
Fail(String)

为总是失败的断言发出或显示消息和堆栈跟踪。

Fail(String, String)

为总是失败的断言发出或显示详细消息和堆栈跟踪。

Flush()

在派生类中被重写时,刷新输出缓冲区。

(继承自 TraceListener)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetLifetimeService()
已过时。

检索控制此实例的生存期策略的当前生存期服务对象。

(继承自 MarshalByRefObject)
GetSupportedAttributes()

获取跟踪侦听器支持的自定义特性。

(继承自 TraceListener)
GetType()

获取当前实例的 Type

(继承自 Object)
InitializeLifetimeService()
已过时。

获取生存期服务对象来控制此实例的生存期策略。

(继承自 MarshalByRefObject)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
MemberwiseClone(Boolean)

创建当前 MarshalByRefObject 对象的浅表副本。

(继承自 MarshalByRefObject)
ToString()

返回表示当前对象的字符串。

(继承自 Object)
TraceData(TraceEventCache, String, TraceEventType, Int32, Object)

向特定于侦听器的输出中写入跟踪信息、数据对象和事件信息。

(继承自 TraceListener)
TraceData(TraceEventCache, String, TraceEventType, Int32, Object[])

向特定于侦听器的输出中写入跟踪信息、数据对象的数组和事件信息。

(继承自 TraceListener)
TraceEvent(TraceEventCache, String, TraceEventType, Int32)

向特定于侦听器的输出写入跟踪和事件信息。

(继承自 TraceListener)
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String)

向特定于侦听器的输出中写入跟踪信息、消息和事件信息。

(继承自 TraceListener)
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String, Object[])

向特定于侦听器的输出中写入跟踪信息、格式化对象数组和事件信息。

(继承自 TraceListener)
TraceTransfer(TraceEventCache, String, Int32, String, Guid)

向侦听器特定的输出中写入跟踪信息、消息、相关活动标识和事件信息。

(继承自 TraceListener)
Write(Object)

实现 ToString() 类时,向所创建的侦听器写入对象的 TraceListener 方法值。

(继承自 TraceListener)
Write(Object, String)

实现 ToString() 类时,向所创建的侦听器写入类别名称和对象的 TraceListener 方法值。

(继承自 TraceListener)
Write(String)

将输出写入 OutputDebugString 函数和 Log(Int32, String, String) 方法。

Write(String, String)

实现 TraceListener 类时,向所创建的侦听器写入类别名称和消息。

(继承自 TraceListener)
WriteIndent()

实现此类时,向所创建的侦听器写入缩进,并将 NeedIndent 属性重置为 false

(继承自 TraceListener)
WriteLine(Object)

实现 TraceListener 类时,向所创建的侦听器写入对象的 ToString() 方法值,后跟行结束符。

(继承自 TraceListener)
WriteLine(Object, String)

实现 TraceListener 类时,向所创建的侦听器写入类别名称和对象的 ToString() 方法值,后跟行结束符。

(继承自 TraceListener)
WriteLine(String)

将输出写入 OutputDebugString 函数和 Log(Int32, String, String) 方法,后接回车符和换行符 (\r\n)。

WriteLine(String, String)

实现 TraceListener 类时,向所创建的侦听器写入类别名称和消息,后跟行结束符。

(继承自 TraceListener)

适用于

线程安全性

此类是线程安全的。

另请参阅