Freigeben über


TraceSwitch-Klasse

Stellt einen Schalter bereit, mit dem mehrere Ebenen ausgewählt und so Ablaufverfolgungs- und Debugausgabe gesteuert werden können, ohne dass der Code hierfür neu kompiliert werden muss.

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

Syntax

'Declaration
Public Class TraceSwitch
    Inherits Switch
'Usage
Dim instance As TraceSwitch
public class TraceSwitch : Switch
public ref class TraceSwitch : public Switch
public class TraceSwitch extends Switch
public class TraceSwitch extends Switch

Hinweise

Mit einem Ablaufverfolgungsschalter können Sie Meldungen je nach ihrer Wichtigkeit herausfiltern. Die TraceSwitch-Klasse stellt die TraceError-Eigenschaft, die TraceWarning-Eigenschaft, die TraceInfo-Eigenschaft und die TraceVerbose-Eigenschaft bereit, um die Ebene des Schalters zu überprüfen. Die Level-Eigenschaft ruft den TraceLevel des Schalters ab oder legt diesen fest.

Sie können die Ebene von TraceSwitch über die Anwendungskonfigurationsdatei festlegen und anschließend die konfigurierte TraceSwitch-Ebene in der Anwendung verwenden. Sie können auch einen TraceSwitch im Code erstellen und die Ebene direkt festlegen, um einen bestimmten Codeabschnitt zu instrumentieren.

Zum Konfigurieren von TraceSwitch bearbeiten Sie die Konfigurationsdatei, die dem Namen der Anwendung entspricht. In dieser Datei können Sie einen Schalter hinzufügen oder entfernen, den Wert eines Schalters festlegen oder alle Schalter löschen, die zuvor durch die Anwendung festgelegt wurden. Die Konfigurationsdatei sollte wie im folgenden Beispiel formatiert werden:

<configuration>
  <system.diagnostics>
    <switches>
      <add name="mySwitch" value="1" />
    </switches>
  </system.diagnostics>
</configuration>

In diesem Konfigurationsabschnitt wird ein TraceSwitch definiert, wobei DisplayName auf mySwitch und Level auf 1 festgelegt ist. Dieser Wert entspricht dem Enumerationswert TraceLevel.Error. In der Anwendung können Sie die konfigurierte Schalterebene verwenden, indem Sie einen TraceSwitch mit demselben Namen erstellen, wie im folgenden Beispiel veranschaulicht:

Private Shared appSwitch As New TraceSwitch("mySwitch", _
"Switch in config file")
Public Shared Sub Main(ByVal CmdArgs() As String)
'...
    Console.WriteLine("Trace switch {0} configured as {1}", _
    appSwitch.DisplayName, appSwitch.Level.ToString())
    If appSwitch.TraceError Then
        '...
    End If
End Sub
private static TraceSwitch appSwitch = new TraceSwitch("mySwitch", 
"Switch in config file");

public static void Main(string[] args) 
{
    //...
    Console.WriteLine("Trace switch {0} configured as {1}", 
    appSwitch.DisplayName, appSwitch.Level.ToString());
    if (appSwitch.TraceError)
    {
        //...
    }
}

Standardmäßig wird die Level-Eigenschaft des Schalters mit dem Wert festgelegt, der in der Konfigurationsdatei angegeben ist. Wenn der TraceSwitch-Konstruktor keine Anfangseinstellungen für den Schalter in der Konfigurationsdatei findet, wird der Level des neuen Schalters auf den Standardwert TraceLevel.Off festgelegt.

Sie müssen die Ablaufverfolgung oder das Debuggen aktivieren, um einen Schalter 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.

Hinweis

Wenn die TraceSwitch-Klasse isoliert verwendet wird, sind diese Compilerschalter für Debugging und Ablaufverfolgung nicht erforderlich. Sie werden nur in Verbindung mit der Trace-Methode oder der Debug-Methode benötigt, die bedingt kompiliert werden.

Weitere Informationen zum Instrumentieren der Anwendung finden Sie unter Debug und Trace. Weitere Informationen über das Konfigurieren und Verwenden von Ablaufverfolgungsschaltern finden Sie unter Ablaufverfolgungsschalter.

Hinweis

Sie können TraceSwitch-Member in der Klasse als static festlegen, um die Leistung zu erhöhen.

Thema Position
Gewusst wie: Konfigurieren von Ablaufverfolgungsschaltern .NET Framework: Debuggen
Gewusst wie: Erstellen und Initialisieren von Ablaufverfolgungsschaltern .NET Framework: Debuggen
Gewusst wie: Konfigurieren von Ablaufverfolgungsschaltern .NET Framework: Debuggen
Gewusst wie: Erstellen und Initialisieren von Ablaufverfolgungsschaltern .NET Framework: Debuggen

Beispiel

Im folgenden Codebeispiel wird ein neuer TraceSwitch erstellt und mit diesem Schalter bestimmt, ob Fehlermeldungen ausgegeben werden sollen. Der Schalter wird auf Klassenebene erstellt. MyMethod gibt die erste Fehlermeldung aus, wenn die Level-Eigenschaft auf TraceLevel.Error oder höher festgelegt ist. MyMethod gibt die zweite Fehlermeldung jedoch nicht aus, wenn Level kleiner als TraceLevel.Verbose ist.

' Class-level declaration.
' Create a TraceSwitch to use in the entire application. 
Private Shared mySwitch As New TraceSwitch("General", "Entire Application")    

Public Shared Sub MyMethod()
    ' Write the message if the TraceSwitch level is set to Error or higher.
    If mySwitch.TraceError Then
        Console.WriteLine("My error message.")
    End If 
    ' Write the message if the TraceSwitch level is set to Verbose.
    If mySwitch.TraceVerbose Then
        Console.WriteLine("My second error message.")
    End If
End Sub

Public Shared Sub Main()
    ' Run the method that prints error messages based on the switch level.
    MyMethod()
End Sub
//Class-level declaration.
 /* Create a TraceSwitch to use in the entire application.*/
 static TraceSwitch mySwitch = new TraceSwitch("General", "Entire Application");
 
 static public void MyMethod() {
    // Write the message if the TraceSwitch level is set to Error or higher.
    if(mySwitch.TraceError)
       Console.WriteLine("My error message.");
 
    // Write the message if the TraceSwitch level is set to Verbose.
    if(mySwitch.TraceVerbose)
       Console.WriteLine("My second error message.");
 }
 
 public static void Main(string[] args) {
    // Run the method that prints error messages based on the switch level.
    MyMethod();
 }
 
   // Class-level declaration.
   /* Create a TraceSwitch to use in the entire application.*/
private:
   static TraceSwitch^ mySwitch = gcnew TraceSwitch( "General", "Entire Application" );

public:
   static void MyMethod()
   {
      // Write the message if the TraceSwitch level is set to Error or higher.
      if ( mySwitch->TraceError )
         Console::WriteLine( "My error message." );
      
      // Write the message if the TraceSwitch level is set to Verbose.
      if ( mySwitch->TraceVerbose )
         Console::WriteLine( "My second error message." );
   }

   static void main()
   {
      // Run the method that prints error messages based on the switch level.
      MyMethod();
   }
// Class-level declaration.
/* Create a TraceSwitch to use in the entire application.
 */
private static TraceSwitch mySwitch =
    new TraceSwitch("General", "Entire Application");

public static void MyMethod()
{
    //Write the message if the TraceSwitch level is set to Error or higher.
    if (mySwitch.get_TraceError()) {
        Console.WriteLine("My error message.");
    }

    // Write the message if the TraceSwitch level is set to Verbose.
    if (mySwitch.get_TraceVerbose()) {
        Console.WriteLine("My second error message.");
    }
} //MyMethod

public static void main(String[] args)
{
    // Run the method that prints error messages based on the switch level.
    MyMethod();
} //main

Vererbungshierarchie

System.Object
   System.Diagnostics.Switch
    System.Diagnostics.TraceSwitch

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, 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

Siehe auch

Referenz

TraceSwitch-Member
System.Diagnostics-Namespace
Switch-Klasse
BooleanSwitch-Klasse
TraceLevel-Enumeration
Debug-Klasse
Trace-Klasse