Ablaufverfolgungsschalter

Aktualisiert: November 2007

Mit Ablaufverfolgungsschaltern aktivieren, deaktivieren und filtern Sie die Ablaufverfolgungsausgabe. Sie sind Objekte im Code und können extern in der CONFIG-Datei konfiguriert werden. .NET Framework bietet drei Typen von Ablaufverfolgungsschaltern: die Klassen BooleanSwitch, TraceSwitch und SourceSwitch. Die BooleanSwitch-Klasse fungiert als Umschalter, d. h., sie aktiviert bzw. deaktiviert eine Vielzahl von Ablaufverfolgungsanweisungen. Mit der TraceSwitch-Klasse und der SourceSwitch-Klasse aktivieren Sie einen Ablaufverfolgungsschalter für eine bestimmte Ablaufverfolgungsebene, sodass die für diese und alle darunter liegenden Ebenen angegebenen Trace-Meldungen oder TraceSource-Meldungen angezeigt werden. Wenn Sie den Schalter deaktivieren, werden die Ablaufverfolgungsmeldungen nicht angezeigt. Alle Klassen werden von der abstrakten (MustInherit) Switch-Klasse abgeleitet. Dies gilt für alle vom Benutzer entwickelten Schalter.

Ablaufverfolgungsschalter eignen sich gut zum Filtern von Informationen. Beispiel: In einem Datenzugriffsmodul sollen alle Ablaufverfolgungsmeldungen angezeigt werden, in der restlichen Anwendung genügen jedoch die Fehlermeldungen. In diesem Fall verwenden Sie einen Ablaufverfolgungsschalter für das Datenzugriffsmodul und einen Schalter für die restliche Anwendung. Wenn Sie die Schalter in der CONFIG-Datei mit den entsprechenden Einstellungen konfigurieren, können Sie steuern, welche Typen von Ablaufverfolgungsmeldungen Sie empfangen. Weitere Informationen finden Sie unter Gewusst wie: Erstellen und Initialisieren von Ablaufverfolgungsschaltern und Gewusst wie: Konfigurieren von Ablaufverfolgungsschaltern.

Eine bereitgestellte Anwendung wird in der Regel mit deaktivierten Schaltern ausgeführt, damit die Benutzer nicht auf eine Vielzahl unerheblicher Ablaufverfolgungsmeldungen achten müssen, die auf dem Bildschirm angezeigt oder in einer Protokolldatei abgelegt werden, während die Anwendung ausgeführt wird. Wenn bei der Ausführung der Anwendung ein Problem auftritt, können Sie sie anhalten, die Schalter aktivieren und die Anwendung neu starten. Dann werden die Ablaufverfolgungsmeldungen angezeigt.

Damit Sie einen Schalter verwenden können, müssen Sie zunächst ein Schalterobjekt in einer BooleanSwitch-Klasse, einer TraceSwitch-Klasse oder einer entwicklerdefinierten Switch-Klasse erstellen. Weitere Informationen zum Erstellen entwicklerdefinierter Schalter finden Sie unter Switch-Klasse in der Referenz zu .NET Framework. Anschließend legen Sie einen Konfigurationswert fest, der angibt, wann das Schalterobjekt verwendet werden soll. Danach wird die Einstellung des Schalterobjekts in verschiedenen Trace-Ablaufverfolgungsmethoden (oder Debug-Ablaufverfolgungsmethoden) getestet.

Ablaufverfolgungsebenen

Im Zusammenhang mit TraceSwitch sind noch weitere Aspekte zu beachten. Ein TraceSwitch-Objekt hat vier Eigenschaften, die Boolean-Werte zurückgeben und angeben, ob der Schalter für mindestens eine bestimmte Ebene festgelegt ist:

Mit Ebenen können Sie die Menge der empfangenen Ablaufverfolgungsdaten auf die zur Lösung eines Problems benötigten Informationen einschränken. Durch Einstellen und Konfigurieren der Ablaufverfolgungsschalter für die entsprechende Ablaufverfolgungsebene legen Sie die gewünschte Detailstufe für die Ablaufverfolgungsausgabe fest. Sie können Fehlermeldungen, Warnmeldungen, Informationsmeldungen und ausführliche Ablaufverfolgungsmeldungen erhalten oder Meldungen ganz ausschließen.

Welchen Meldungstyp Sie den einzelnen Ebenen zuordnen, bleibt Ihnen überlassen. In der Regel richtet sich der Inhalt der Ablaufverfolgungsmeldungen nach den Ebenenzuordnungen, jedoch bestimmen Sie die Unterschiede zwischen den Ebenen. So könnten Sie z. B. auf Ebene 3 (Info) detaillierte Problembeschreibungen und auf Ebene 1 (Error) lediglich Fehlerverweisnummern zur Verfügung stellen. Welches Schema für Ihre Anwendung am sinnvollsten ist, entscheiden Sie.

Diese Eigenschaften entsprechen den Werten 1 bis 4 der TraceLevel-Enumeration. In der folgenden Tabelle werden die Ebenen der TraceLevel-Enumeration mit ihren Werten aufgeführt.

Enumerationswert

Ganzzahliger Wert

Angezeigter (oder in angegebenes Ausgabeziel geschriebener) Meldungstyp

Deaktiviert

0

Keine

Fehler

1

Nur Fehlermeldungen

Warnung

2

Warnmeldungen und Fehlermeldungen

Info

3

Informationsmeldungen, Warnmeldungen und Fehlermeldungen

Verbose

4

Ausführliche Meldungen, Informationsmeldungen, Warnmeldungen und Fehlermeldungen

Die TraceSwitch-Eigenschaften geben die oberste Ebene für den Schalter an. Das bedeutet, dass Ablaufverfolgungsdaten neben der angegebenen Ebene auch für alle niedrigeren Ebenen geschrieben werden. Wenn TraceInfo z. B. True ist, sind auch TraceError und TraceWarningTrue. TraceVerbose kann jedoch dennoch False sein.

Diese Eigenschaften sind schreibgeschützt. Sie werden beim Festlegen der TraceLevel-Eigenschaft durch das TraceSwitch-Objekt automatisch festgelegt. Beispiel:

Dim myTraceSwitch As New TraceSwitch("SwitchOne", "The first switch")
myTraceSwitch.Level = TraceLevel.Info
' This message box displays true, becuase setting the level to
' TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString())
' This messagebox displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString())
System.Diagnostics.TraceSwitch myTraceSwitch = 
   new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.Level = System.Diagnostics.TraceLevel.Info;
// This message box displays true, becuase setting the level to 
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString());
// This message box displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString());
System.Diagnostics.TraceSwitch myTraceSwitch =
   new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.set_Level(System.Diagnostics.TraceLevel.Info);
// This message box displays true, becuase setting the level to 
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(Convert.ToString(myTraceSwitch.get_TraceWarning()));
// This message box displays false.
MessageBox.Show(Convert.ToString(myTraceSwitch.get_TraceVerbose()));}

Entwicklerdefinierte Schalter

Neben BooleanSwitch und TraceSwitch können Sie auch eigene Schalter definieren, indem Sie von der Switch-Klasse erben und die Basisklassenmethoden mit benutzerdefinierten Methoden überschreiben. Weitere Informationen zum Erstellen entwicklerdefinierter Schalter finden Sie unter Switch-Klasse in der Referenz zu .NET Framework.

Siehe auch

Aufgaben

Gewusst wie: Hinzufügen von Ablaufverfolgungsanweisungen zu Anwendungscode

Gewusst wie: Konfigurieren von Ablaufverfolgungsschaltern

Konzepte

Ablaufverfolgungslistener

Einführung in Instrumentation und Ablaufverfolgung

Weitere Ressourcen

Ablaufverfolgung und Instrumentieren von Anwendungen