Freigeben über


DefaultTraceListener-Klasse

Stellt die Standardausgabemethoden und das Standardverhalten für die Ablaufverfolgung bereit.

Namespace: System.Diagnostics
Assembly: System (in system.dll)

Syntax

'Declaration
Public Class DefaultTraceListener
    Inherits TraceListener
'Usage
Dim instance As DefaultTraceListener
public class DefaultTraceListener : TraceListener
public ref class DefaultTraceListener : public TraceListener
public class DefaultTraceListener extends TraceListener
public class DefaultTraceListener extends TraceListener

Hinweise

Hinweis

Das auf diese Klasse angewendete HostProtectionAttribute-Attribut besitzt den Resources-Eigenschaftenwert Synchronization. Das HostProtectionAttribute hat keine Auswirkungen auf Desktopanwendungen (die normalerweise durch Doppelklicken auf ein Symbol, Eingeben eines Befehls oder eines URL in einem Browser gestartet werden). Weitere Informationen finden Sie unter der HostProtectionAttribute-Klasse oder unter SQL Server-Programmierung und Hostschutzattribute.

Der Debug.Listeners-Auflistung und der Trace.Listeners-Auflistung wird eine Instanz dieser Klasse automatisch hinzugefügt. Das explizite Hinzufügen eines zweiten DefaultTraceListener führt zu doppelten Meldungen im Debuggerausgabefenster und doppelten Meldungsfenstern für Bestätigungen.

In der Standardeinstellung geben die Write-Methode und die WriteLine-Methode die Meldung an die Win32-OutputDebugString-Funktion und die Debugger.Log-Methode aus. Informationen über die OutputDebugString-Funktion finden Sie im Platform SDK oder in MSDN.

Die Fail-Methode zeigt standardmäßig ein Meldungsfeld an, wenn die Anwendung in einem Benutzeroberflächenmodus ausgeführt wird. Diese Methode gibt die Meldung auch über WriteLine aus.

Sie müssen die Ablaufverfolgung oder das Debuggen aktivieren, um eine Ablaufverfolgungsüberwachung zu verwenden. Die folgende Syntax ist compilerspezifisch. Wenn Sie einen anderen Compiler als C# oder Visual Basic verwenden, finden Sie entsprechende Informationen in der Dokumentation zum Compiler.

  • Wenn Sie das Debuggen in C# aktivieren möchten, fügen Sie in der Compilerbefehlszeile beim Kompilieren des Codes das /d:DEBUG-Flag hinzu oder fügen Sie #define DEBUG am Anfang der Datei ein. Fügen Sie in Visual Basic in der Compilerbefehlszeile das /d:DEBUG=True-Flag hinzu.

  • Wenn Sie die Verwendung der Ablaufverfolgung in C# aktivieren möchten, fügen Sie in der Compilerbefehlszeile beim Kompilieren des Codes das /d:TRACE-Flag hinzu, oder fügen Sie #define TRACE am Anfang der Datei ein. Fügen Sie in Visual Basic in der Compilerbefehlszeile das /d:TRACE=True-Flag hinzu.

Um eine Ablaufverfolgungsüberwachung hinzuzufügen, bearbeiten Sie die Konfigurationsdatei, die dem Namen der Anwendung entspricht. In dieser Datei können Sie einen Listener hinzufügen und dessen Typ und Parameter festlegen, einen Listener entfernen oder alle Listener löschen, die zuvor durch die Anwendung festgelegt wurden. Die Konfigurationsdatei sollte wie im folgenden Beispiel formatiert werden:

<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>

Beispiel

Im folgenden Codebeispiel werden Binomialkoeffizienten berechnet. Diese werden in der Wahrscheinlichkeitsrechnung und Statistik verwendet. Im Beispiel werden mit einem DefaultTraceListener Ergebnisse verfolgt und Fehler protokolliert. Es wird ein neuer DefaultTraceListener erstellt und der Trace.Listeners-Auflistung hinzugefügt, und die LogFileName-Eigenschaft wird auf die in den Befehlszeilenargumenten angegebene Protokolldatei festgelegt.

Wenn beim Verarbeiten des Eingabeparameters ein Fehler erkannt wird oder die CalcBinomial-Funktion eine Ausnahme auslöst, protokolliert dies die Fail-Methode und zeigt eine Fehlermeldung an. Wenn die AssertUiEnabled-Eigenschaft false lautet, wird die Fehlermeldung auch auf der Konsole ausgegeben. Bei erfolgreicher Berechnung des Ergebnisses schreiben die Write(String)-Methode und die WriteLine(String)-Methode das Ergebnis in die Protokolldatei.

Durch die Fail-Methode, die Write-Methode und die WriteLine-Methode werden Ablaufverfolgungsinformationen nur in den DefaultTraceListener geschrieben. Um Ablaufverfolgungsinformationen in alle Listener der Trace.Listeners-Auflistung zu schreiben, verwenden Sie die Fail-Methode, die Write-Methode und die WriteLine-Methode der Trace-Klasse.

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

Vererbungshierarchie

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

Threadsicherheit

Diese Klasse ist threadsicher.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

DefaultTraceListener-Member
System.Diagnostics-Namespace
TraceListener
TextWriterTraceListener
ConsoleTraceListener-Klasse
Debug-Klasse
Trace