Utilisation des journaux des applications dans Visual Basic

Les objets My.Application.Log et My.Log facilitent l’écriture des informations de journalisation et de traçage dans les journaux.

Comment les messages sont enregistrés

Tout d’abord, la gravité du message est vérifiée avec la propriété Switch de la propriété TraceSource du journal. Par défaut, seuls les messages ayant une gravité de niveau « Informations » ou supérieur sont passés aux écouteurs de suivi, spécifiés dans la collection TraceListener du journal. Ensuite, chaque écouteur compare la gravité du message à la propriété Switch de l’écouteur. Si la gravité du message est suffisamment élevée, l’écouteur écrit le message.

Le diagramme suivant montre comment un message écrit dans la méthode WriteEntry est passé aux méthodes WriteLine des écouteurs de suivi du journal :

Diagram that shows My log call.

Vous pouvez changer le comportement du journal et des écouteurs de suivi en modifiant le fichier de configuration de l’application. Le diagramme suivant montre la correspondance entre les parties du journal et le fichier de configuration.

Diagram that shows My log configuration.

Emplacement d’enregistrement des messages

Si l’assembly n’a pas de fichier de configuration, les objets My.Application.Log et My.Log écrivent dans la sortie de débogage de l’application (via la classe DefaultTraceListener ). En outre, l’objet My.Application.Log écrit dans le fichier journal de l’assembly (via la classe FileLogTraceListener ), tandis que l’objet My.Log écrit dans la sortie de la page web ASP.NET (via la classe WebPageTraceListener ).

Vous pouvez voir la sortie de débogage dans la fenêtre Sortie de Visual Studio lors de l’exécution de votre application en mode débogage. Pour ouvrir la fenêtre Sortie , cliquez sur l’élément de menu Déboguer , pointez sur Windows, puis cliquez sur Sortie. Dans la fenêtre Sortie , sélectionnez Déboguer dans la zone Afficher la sortie à partir de .

Par défaut, My.Application.Log écrit le fichier journal dans le chemin des données d’application de l’utilisateur. Vous pouvez obtenir le chemin dans la propriété FullLogFileName de l’objet DefaultFileLogWriter . Le format de ce chemin est le suivant :

BasePath\CompanyName\ProductName\ProductVersion

Voici une valeur habituelle de BasePath .

C:\Documents and Settings\username\Application Data

Les valeurs de CompanyName, de ProductNameet de ProductVersion proviennent des informations d’assembly de l’application. La forme du nom du fichier journal est nom_assembly.log, où nom_assembly est le nom de fichier de l’assembly sans l’extension. Si plusieurs fichiers journaux sont nécessaires, par exemple dans le cas où le journal d’origine n’est pas disponible au moment où l’application tente d’écrire dans le journal, la forme du nom du fichier journal est nom_assembly-iteration.log, où iteration est un nombre positif de type Integer.

Vous pouvez remplacer le comportement par défaut en ajoutant ou en modifiant les fichiers de configuration de l’ordinateur et de l’application. Pour plus d'informations, consultez Walkthrough: Changing Where My.Application.Log Writes Information.

Configuration des paramètres de journalisation

L’objet Log a une implémentation par défaut qui fonctionne sans fichier de configuration d’application app.config. Pour modifier les valeurs par défaut, vous devez ajouter un fichier de configuration avec les nouveaux paramètres. Pour plus d'informations, consultez Walkthrough: Filtering My.Application.Log Output.

Les sections de configuration de la journalisation se trouvent dans le nœud <system.diagnostics> du nœud <configuration> principal du fichier app.config. Les informations de la journalisation sont définies dans plusieurs nœuds :

  • Les écouteurs pour l’objet Log sont définis dans le nœud <sources> nommé DefaultSource.

  • Le filtre de gravité pour l’objet Log est défini dans le nœud <switches> nommé DefaultSwitch.

  • Les écouteurs de journalisation sont définis dans le nœud <sharedListeners> .

Le code suivant montre des exemples de nœuds <sources>, <switches>et <sharedListeners> :

<configuration>
  <system.diagnostics>
    <sources>
      <source name="DefaultSource" switchName="DefaultSwitch">
        <listeners>
          <add name="FileLog"/>
        </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"
      />
    </sharedListeners>
  </system.diagnostics>
</configuration>

Modification des paramètres du journalisation après le déploiement

Quand vous développez une application, ses paramètres de configuration sont stockés dans le fichier app.config, comme illustré dans les exemples ci-dessus. Après avoir déployé votre application, vous pouvez toujours configurer le journal en modifiant le fichier de configuration. Dans une application Windows, le nom de ce fichier est nom_application.exe.config et doit se trouver dans le même dossier que le fichier exécutable. Pour une application web, il s'agit du fichier Web.config associé au projet.

Quand votre application exécute le code qui crée une instance d’une classe pour la première fois, elle recherche des informations sur l’objet dans le fichier de configuration. Pour l’objet Log , cette action se produit lors du premier accès à cet objet Log . Le système examine le fichier de configuration une seule fois pour un objet particulier, la première fois que votre application crée l’objet. Par conséquent, il peut être nécessaire de redémarrer l’application pour que les modifications prennent effet.

Dans une application déployée, vous activez le traçage du code en reconfigurant les objets de commutateur avant que votre application démarre. Ceci implique généralement l’activation et la désactivation des objets de commutateur, ou le changement des niveaux de traçage, puis le redémarrage de votre application.

Considérations relatives à la sécurité

Prenez en compte les éléments suivants lors de l’écriture de données dans le journal :

  • Évitez la fuite des informations utilisateur. Vérifiez que votre application écrit seulement des informations approuvées dans le journal. Par exemple, il peut être acceptable que le journal de l’application contienne des noms d’utilisateurs, mais pas des mots de passe utilisateur.

  • Sécurisez les emplacements des journaux. Les journaux qui contiennent des informations potentiellement sensibles doivent être stockés à un emplacement sécurisé.

  • Évitez les informations erronées. En règle générale, votre application doit valider toutes les données entrées par un utilisateur avant de les utiliser. Ceci inclut l’écriture de données dans le journal de l’application.

  • Évitez les dénis de service. Si votre application écrit trop d’informations dans le journal, elle peut remplir rapidement le journal ou rendre difficile la recherche d’informations importantes.

Voir aussi