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