Commutateurs de traçage

Les commutateurs de traçage vous permettent d'activer, de désactiver et de filtrer la sortie de traçage. Les commutateurs de traçage sont des objets qui existent dans votre code et qui peuvent être configurés de l'extérieur via le fichier .config. Il y a trois types de commutateurs de trace fournis dans le .NET Framework : la classe BooleanSwitch, la classe TraceSwitch et la classe SourceSwitch. La classe BooleanSwitch agit comme un commutateur qui active ou désactive diverses instructions de traçage. Les classes TraceSwitch et SourceSwitch vous permettent d'activer un commutateur de trace pour un niveau de suivi particulier afin que les messages Trace ou TraceSource spécifiés pour ce niveau et tous les niveaux au-dessous de lui apparaissent. Si vous désactivez le commutateur, les messages de trace n'apparaîtront pas. Toutes ces classes dérivent de la classe abstraite (MustInherit) Switch, comme tous les commutateurs développés par utilisateur.

Les commutateurs de traçage peuvent être utiles pour filtrer des informations. Par exemple, vous pouvez envisager d'examiner chaque message de trace dans un module d'accès à des données, mais uniquement les messages d'erreur dans le reste de l'application. Dans ce cas, vous pouvez utiliser un commutateur de traçage pour le module d'accès à des données et un commutateur pour le reste de l'application. En utilisant le fichier .config pour configurer les commutateurs avec les paramètres appropriés, vous pouvez contrôler les types de message de trace que vous recevez. Pour plus d'informations, consultez Comment : créer et initialiser les commutateurs de trace et Comment : configurer les commutateurs de trace.

En règle générale, une application distribuée s'exécute sans que les commutateurs ne soient activés, car il n'est pas nécessaire que les utilisateurs observent de nombreux messages inutiles à l'écran ou que ceux-ci soient enregistrés dans un fichier journal à mesure que l'application s'exécute. Si un problème survient au cours de l'exécution de l'application, vous pouvez arrêter l'application, activer les commutateurs et redémarrer l'application. Les messages de trace sont alors affichés.

Pour utiliser un commutateur, vous devez tout d'abord créer un objet commutateur à partir d'une classe BooleanSwitch, une classe TraceSwitch ou une classe de commutateur définie par le développeur. Pour plus d'informations sur la création de commutateurs définis par le développeur, consultez Switch, classe dans le manuel Microsoft .NET Framework Reference. Vous définissez alors une valeur de configuration qui spécifie à quel moment l'objet commutateur doit être utilisé. Vous testez ensuite le paramètre de l'objet commutateur dans plusieurs méthodes de traçage Trace (ou Debug).

Niveaux de traçage

Lorsque vous utilisez TraceSwitch, d'autres aspects sont à prendre en compte. Un objet TraceSwitch possède quatre propriétés qui retournent des valeurs booléennes indiquant si le commutateur est défini pour au moins un niveau particulier :

Les niveaux vous permettent de limiter la quantité d'informations de traçage que vous recevez à celles qui sont nécessaires pour résoudre un problème. Vous pouvez spécifier le niveau de détail que vous souhaitez obtenir dans la sortie du traçage en définissant et en configurant des commutateurs de traçage au niveau de traçage approprié. Vous pouvez recevoir des messages d'erreur, des messages d'avertissement, des messages d'information, des messages de trace documentés ou pas de message du tout.

Il vous appartient de décider du type de message à associer à chaque niveau. Généralement, le contenu des messages de trace dépend de ce que vous associez à chaque niveau, mais vous déterminez les différences entre les niveaux. Vous pouvez par exemple fournir des descriptions détaillées au niveau 3 (Info) et fournir uniquement un numéro de référence d'erreur au niveau 1 (Erreur). Il vous appartient de décider du schéma le mieux approprié dans votre application.

Ces propriétés correspondent aux valeurs 1 à 4 de l'énumération TraceLevel. Le tableau suivant répertorie les niveaux de l'énumération TraceLevel et leurs valeurs.

Valeur énumérée

Valeur de type entier

Type de message affiché (ou écrit vers une cible de sortie spécifiée)

Off

0

Aucun

Erreur

1

Uniquement les messages d'erreur

Avertissement

2

Messages d'avertissement et messages d'erreur

Info

3

Messages d'information, d'avertissement et d'erreur

Verbose

4

Messages documentés, messages d'information, messages d'avertissement et messages d'erreur

Les propriétés TraceSwitch indiquent le niveau de traçage maximum pour le commutateur. En d'autres termes, les informations de traçage sont écrites pour le niveau spécifié et pour tous les niveaux inférieurs. Par exemple, si TraceInfo a la valeur true, TraceError et TraceWarning ont également la valeur true, mais TraceVerbose peut très bien avoir la valeur false.

Ces propriétés sont en lecture seule. L'objet TraceSwitch les définit automatiquement lorsque la propriété TraceLevel est définie. Par exemple :

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()));}

Commutateurs définis par le développeur

En plus des classes BooleanSwitch et TraceSwitch, vous pouvez définir vos propres commutateurs en héritant de la classe Switch et en substituant les méthodes de la classe de base avec des méthodes personnalisées. Pour plus d'informations sur la création de commutateurs définis par le développeur, consultez Switch, classe dans le manuel Microsoft .NET Framework Reference.

Voir aussi

Tâches

Comment : ajouter des instructions de traçage dans le code d'une application

Comment : configurer les commutateurs de trace

Concepts

Écouteurs de la trace

Introduction à l'instrumentation et au traçage

Autres ressources

Traçage et instrumentation d'applications