Partager via


Procédure pas à pas : filtrage de la sortie My.Application.Log (Visual Basic)

Cette procédure pas à pas montre comment modifier le filtrage de journal par défaut de l’objet My.Application.Log pour contrôler les informations passées de l’objet Log aux écouteurs et celles qui sont écrites par les écouteurs. Vous pouvez modifier le comportement de journalisation même après avoir généré l’application, car les informations de configuration sont stockées dans le fichier de configuration de l’application.

Pour commencer

Chaque message écrit par My.Application.Log a un niveau de gravité associé que les mécanismes de filtrage utilisent pour contrôler la sortie de journal. Cet exemple d’application utilise des My.Application.Log méthodes pour écrire plusieurs messages de journal avec différents niveaux de gravité.

Pour construire l’exemple d’application

  1. Ouvrez un nouveau projet d’application Windows Visual Basic.

  2. Ajoutez un bouton nommé Button1 à Form1.

  3. Dans le gestionnaire d’événements Click pour Button1, ajoutez le code suivant :

    ' Activity tracing information
    My.Application.Log.WriteEntry("Entering Button1_Click", TraceEventType.Start)
    
    ' Tracing information
    My.Application.Log.WriteEntry("In Button1_Click", TraceEventType.Information)
    
    ' Create an exception to log.
    Dim ex As New ApplicationException
    ' Exception information
    My.Application.Log.WriteException(ex)
    
    ' Activity tracing information
    My.Application.Log.WriteEntry("Leaving Button1_Click", TraceEventType.Stop)
    
  4. Exécutez l’application dans le débogueur.

  5. Appuyez sur Button1.

    L’application écrit les informations suivantes dans le fichier journal et la sortie de débogage de l’application.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Fermez l’application.

    Pour plus d’informations sur la façon d’afficher la fenêtre de sortie de débogage de l’application, consultez Fenêtre Sortie. Pour des informations sur l’emplacement du fichier journal de l’application, consultez Guide : Déterminer où My.Application.Log écrit les informations.

    Remarque

    Par défaut, l’application vide la sortie du fichier journal lorsque l’application se ferme.

    Dans l’exemple ci-dessus, le deuxième appel à la méthode WriteEntry et l’appel à la méthode WriteException produisent une sortie de journal, tandis que les premiers et derniers appels à la méthode WriteEntry ne le font pas. Étant donné que les niveaux de gravité de WriteEntry et WriteException sont « Information » et « Erreur », ceux-ci sont autorisés par le filtrage de journal par défaut de l’objet My.Application.Log. Toutefois, les événements avec les niveaux de gravité « Démarrage » et « Arrêt » ne peuvent pas générer une sortie de journal.

Filtrage pour tous les listeners de My.Application.Log

L’objet My.Application.Log utilise un SourceSwitch nommé DefaultSwitch pour gérer les messages qu’il passe des méthodes WriteEntry et WriteException aux écouteurs de journalisation. Vous pouvez configurer DefaultSwitch dans le fichier de configuration de l’application en définissant sa valeur sur l’une des valeurs d’énumération SourceLevels . Par défaut, sa valeur est « Information ».

Ce tableau affiche le niveau de gravité requis pour le journal afin d’écrire un message pour les écouteurs, avec un paramètre DefaultSwitch particulier.

Valeur DefaultSwitch Gravité des messages requise pour la sortie
Critical Critical
Error Critical ou Error
Warning Critical, Error ou Warning
Information Critical, Error, Warningou Information
Verbose Critical, Error, Warning, Informationou Verbose
ActivityTracing Start, Stop, Suspend, Resumeou Transfer
All Tous les messages sont autorisés.
Off Tous les messages sont bloqués.

Remarque

Les méthodes WriteEntry et WriteException ont chacune une surcharge qui ne spécifie pas de niveau de gravité. Le niveau de gravité implicite de la WriteEntry surcharge est « Informations », et le niveau de gravité implicite de la WriteException surcharge est « Erreur ».

Ce tableau explique la sortie de journal affichée dans l’exemple précédent : avec la valeur « Information » du paramètre DefaultSwitch par défaut, seuls le deuxième appel à la méthode WriteEntry et l’appel à la méthode WriteException génèrent la sortie de journal.

Pour journaliser uniquement les événements de suivi d’activité

  1. Cliquez avec le bouton droit sur app.config dans l’Explorateur de solutions , puis sélectionnez Ouvrir.

    - ou -

    S’il n’existe aucun fichier app.config :

    1. Dans le menu Projet , choisissez Ajouter un nouvel élément.

    2. Dans la boîte de dialogue Ajouter un nouvel élément , choisissez Fichier de configuration de l’application.

    3. Cliquez sur Ajouter.

  2. Recherchez la section <switches> dans la section <system.diagnostics>, qui se trouve dans la section <configuration> de niveau supérieur.

  3. Recherchez l’élément qui ajoute DefaultSwitch à la collection de commutateurs. Il doit ressembler à cet élément :

    <add name="DefaultSwitch" value="Information" />

  4. Remplacez la valeur de l’attribut value par « ActivityTracing ».

  5. Le contenu du fichier app.config doit être similaire au code XML suivant :

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.diagnostics>
        <sources>
          <!-- This section configures My.Application.Log -->
          <source name="DefaultSource" switchName="DefaultSwitch">
            <listeners>
              <add name="FileLog"/>
            </listeners>
          </source>
        </sources>
        <switches>
          <add name="DefaultSwitch" value="ActivityTracing" />
        </switches>
        <sharedListeners>
          <add name="FileLog"
               type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
                     Microsoft.VisualBasic, Version=8.0.0.0,
                     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
                     processorArchitecture=MSIL"
               initializeData="FileLogWriter"/>
        </sharedListeners>
      </system.diagnostics>
    </configuration>
    
  6. Exécutez l’application dans le débogueur.

  7. Appuyez sur Button1.

    L’application écrit les informations suivantes dans le fichier journal et la sortie de débogage de l’application :

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Fermez l’application.

  9. Remplacez la valeur de l’attribut value par « Information ».

    Remarque

    Le DefaultSwitch paramètre de commutateur contrôle uniquement My.Application.Log. Elle ne modifie pas le comportement des classes .NET System.Diagnostics.Trace et System.Diagnostics.Debug.

Filtrage individuel pour les écouteurs My.Application.Log

L’exemple précédent montre comment modifier le filtrage de toutes les My.Application.Log sorties. Cet exemple montre comment filtrer un écouteur de journalisation. Par défaut, une application a deux écouteurs qui écrivent dans le fichier journal et la sortie de débogage de l’application.

Le fichier de configuration contrôle le comportement des écouteurs de logs en permettant à chacun d’avoir un filtre, qui est semblable à un commutateur pour My.Application.Log. Un écouteur de journal génère un message uniquement si la gravité du message est autorisée à la fois par le filtre du journal DefaultSwitch et celui de l’écouteur de journal.

Cet exemple montre comment configurer le filtrage d’un nouvel écouteur de débogage et l’ajouter à l’objet Log . L’écouteur de débogage par défaut doit être supprimé de l’objet Log . Il est donc clair que les messages de débogage proviennent du nouvel écouteur de débogage.

Pour journaliser uniquement les événements de suivi d’activité

  1. Cliquez avec le bouton droit sur app.config dans l’Explorateur de solutions , puis choisissez Ouvrir.

    - ou -

    S’il n’existe aucun fichier app.config :

    1. Dans le menu Projet , choisissez Ajouter un nouvel élément.

    2. Dans la boîte de dialogue Ajouter un nouvel élément , choisissez Fichier de configuration de l’application.

    3. Cliquez sur Ajouter.

  2. Cliquez avec le bouton droit sur app.config dans l’Explorateur de solutions. Choisissez Ouvrir.

  3. Recherchez la <listeners> section, dans la <source> section avec l’attribut name « DefaultSource », qui se trouve sous la <sources> section. La <sources> section se trouve sous la <system.diagnostics> section, dans la section de niveau <configuration> supérieur.

  4. Ajoutez cet élément à la <listeners> section :

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
    
  5. Recherchez la section <sharedListeners>, dans la section <system.diagnostics>, dans la section <configuration> de niveau supérieur.

  6. Ajoutez cet élément à cette <sharedListeners> section :

    <add name="NewDefault"
         type="System.Diagnostics.DefaultTraceListener,
               System, Version=2.0.0.0, Culture=neutral,
               PublicKeyToken=b77a5c561934e089,
               processorArchitecture=MSIL">
        <filter type="System.Diagnostics.EventTypeFilter"
                initializeData="Error" />
    </add>
    

    Le EventTypeFilter filtre prend l’une des valeurs d’énumération SourceLevels comme attribut initializeData .

  7. Le contenu du fichier app.config doit être similaire au code XML suivant :

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.diagnostics>
        <sources>
          <!-- This section configures My.Application.Log -->
          <source name="DefaultSource" switchName="DefaultSwitch">
            <listeners>
              <add name="FileLog"/>
              <!-- Remove the default debug listener. -->
              <remove name="Default"/>
              <!-- Add a filterable debug listener. -->
              <add name="NewDefault"/>
            </listeners>
          </source>
        </sources>
        <switches>
          <add name="DefaultSwitch" value="Information" />
        </switches>
        <sharedListeners>
          <add name="FileLog"
               type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
                     Microsoft.VisualBasic, Version=8.0.0.0,
                     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
                     processorArchitecture=MSIL"
               initializeData="FileLogWriter"/>
          <add name="NewDefault"
               type="System.Diagnostics.DefaultTraceListener,
                     System, Version=2.0.0.0, Culture=neutral,
                     PublicKeyToken=b77a5c561934e089,
                     processorArchitecture=MSIL">
            <filter type="System.Diagnostics.EventTypeFilter"
                    initializeData="Error" />
          </add>
        </sharedListeners>
      </system.diagnostics>
    </configuration>
    
  8. Exécutez l’application dans le débogueur.

  9. Appuyez sur Button1.

    L’application écrit les informations suivantes dans le fichier journal de l’application :

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    En raison d'un filtrage plus restrictif, l'application écrit moins d'informations dans la sortie de débogage de l'application.

    Default Error 2 Error

  10. Fermez l’application.

Pour plus d’informations sur la modification des paramètres de journal après le déploiement, consultez Utilisation des journaux d’activité des applications.

Voir aussi