DefaultTraceListener 类

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

**命名空间:**System.Diagnostics
**程序集:**System(在 system.dll 中)

语法

声明
Public Class DefaultTraceListener
    Inherits TraceListener
用法
Dim instance As DefaultTraceListener
public class DefaultTraceListener : TraceListener
public ref class DefaultTraceListener : public TraceListener
public class DefaultTraceListener extends TraceListener
public class DefaultTraceListener extends TraceListener

备注

提示

应用于此类的 HostProtectionAttribute 属性 (Attribute) 具有以下 Resources 属性 (Property) 值:SynchronizationHostProtectionAttribute 不影响桌面应用程序(这些应用程序通常通过双击图标、键入命令或在浏览器中输入 URL 来启动)。有关更多信息,请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护属性

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

默认情况下,Write 方法和 WriteLine 方法将该消息发出到 Win32 OutputDebugString 函数和 Debugger.Log 方法。有关 OutputDebugString 函数的信息,请参见 Platform SDK 或 MSDN。

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

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

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

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

若要添加跟踪侦听器,请编辑与应用程序的名称对应的配置文件。在该文件中,可以添加侦听器、设置其类型和参数、移除侦听器或清除以前由应用程序设置的所有侦听器。应像下面的示例这样对配置文件进行格式化:

<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,将其添加到 Trace.Listeners 集合中,并将 LogFileName 属性设置为命令行参数中指定的日志文件。

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

FailWriteWriteLine 方法使跟踪信息只写入 DefaultTraceListener。若要将跟踪信息写入 Trace.Listeners 集合中的所有侦听器,请使用 Trace 类的 FailWriteWriteLine 方法。

Imports System
Imports System.Diagnostics
Imports Microsoft.VisualBasic

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

继承层次结构

System.Object
   System.MarshalByRefObject
     System.Diagnostics.TraceListener
      System.Diagnostics.DefaultTraceListener

线程安全

此类是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

DefaultTraceListener 成员
System.Diagnostics 命名空间
TraceListener
TextWriterTraceListener
ConsoleTraceListener 类
Debug 类
Trace