> Tech > Hiérarchie des loggers

Hiérarchie des loggers

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Les sections précédentes fournissent tout ce qui est nécessaire pour ajouter un logging souple à vos applications. Mais, pour de grandes applications, il existe une autre fonction extrêmement utile : la hiérarchie des loggers.

En effet, chaque logger, à l’exception du logger racine, a un ou plusieurs ancêtres.

Hiérarchie des loggers

Le logger racine est l’ancêtre de tous les loggers nommés. Parmi ces derniers, un logger est un ancêtre d’un autre logger si le nom de l’ancêtre suivi d’un point est un préfixe du nom du logger descendant. Par exemple, un logger nommé OrderEntry est un ancêtre d’un logger nommé OrderEntry.Validate. Les loggers OrderEntry et OrderEntry.Validate sont tous deux les ancêtres d’un logger nommé OrderEntry.Validate.ChkAmt. Un logger est considéré parent ou enfant, si le logger parent est un ancêtre de l’enfant et s’il n’y a pas d’ancêtres entre eux deux. Cette hiérarchie est importante pour deux raisons :

  • Quand aucun niveau n’a été attribué à un logger, il hérite du niveau de son parent
  • Quand une requête de log est validée, tous les appenders attachés au logger et à ses ancêtres sont appelés Ces deux fonctions offrent une grande souplesse d’organisation et de contrôle du logging dans une grande application.

La hiérarchie des loggers que montre la figure 6 est un bon exemple d’héritage de niveau. Tous les loggers, à l’exception de OrderEntry. Validate, ont des niveaux explicitement assignés. OrderEntry.Validate n’a pas de niveau assigné et il hérite donc du niveau Warn provenant du logger OrderEntry, qui est le parent. Si le logger OrderEntry n’avait pas non plus de niveau assigné, lui et le logger OrderEntry.Validate hériteraient du niveau Error en provenance du logger racine.

Avec une hiérarchie de loggers, vous pouvez initialement ne pas assigner des niveaux aux loggers nommés. Ensuite, lors de l’exécution d’une application, on pourra définir sélectivement le niveau pour le ou les loggers appropriés, afin de contrôler un domaine plus large ou plus étroit avec un petit nombre de niveaux assignés. Cette façon de faire simplifie grandement le contrôle à l’exécution de quelles requêtes de log sont validées.

Quand une requête de log est validée, Log4i appelle le ou les appenders attachés au logger auteur de la requête, puis commence à s’intéresser aux loggers ancêtres, en appelant leur(s) appender(s) attaché(s). A noter que le niveau de requête n’est pas revérifié par rapport aux niveaux respectifs des niveaux ancêtres, pendant ce processus. Après qu’une requête ait été validée pour le logger auteur de la requête (en utilisant le niveau assigné ou hérité du logger), les appenders de tous les ancêtres sont appelés.

Cette fonction permet, par exemple, d’avoir un ancêtre d’ordre supérieur qui ajoute toutes les requêtes validées à un fichier, tandis qu’un ancêtre d’ordre inférieur, plus étroitement ciblé, peut ajouter à l’affichage quand on débogue une routine unique.

Log4i fournit une option qui permet de limiter les ancêtres dont les appenders sont appelés, à l’aide de la procédure SetLoggerAdditivity, comme dans l’exemple suivant :

SetLoggerAdditivity( LoggerId : Log4i.FALSE );

Après avoir traité les appenders pour un logger avec le additivity flag sur off, Log4i cesse tout traitement ultérieur des loggers ancêtres.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010