web-dev-qa-db-fra.com

Que sont les marqueurs dans les frameworks de journalisation Java et quelle est la raison de les utiliser?)

La première fois que j'entends parler de marqueurs à la lecture:

http://slf4j.org/faq.html

Je vérifie les méthodes disponibles pour l’objet de l’enregistreur :

et trouvé des interfaces:

Des informations plus détaillées que je reçois de:

mais toujours confus ... Notez que je demande à pourquoi, pas comment de les utiliser, donc ce n'est pas une copie de:

[~ # ~] update [~ # ~] Il semble que lorsque vous utilisez des marqueurs, vous devez également écrire un paramètre personnalisé Java = code au lieu de faire la configuration dans [~ # ~] xml [~ # ~] ou . propriété fichiers ...

UPDATE 2 De http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluator

Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN");
logger.error(notifyAdmin,
  "This is a serious an error requiring the admin's attention",
   new Exception("Just testing"));
85
gavenkoa

Ceci est une version remaniée ma réponse à la question " Meilleures pratiques pour l'utilisation de marqueurs dans SLF4J/Logback ".

Les marqueurs peuvent être utilisés pour color ou marquer une instruction single log. Ce que vous faites avec ces couleurs, c’est-à-dire les marqueurs, vous appartient entièrement. Cependant, deux modèles semblent être communs (le premier plus commun que le second) pour l’utilisation de marqueurs.

  1. Déclenchement : Il pourrait être demandé à certains appender d'effectuer une action en présence d'un marqueur donné. Par exemple, SMTPAppender peut être configuré pour envoyer un courrier électronique chaque fois qu'un événement de journalisation est marqué avec le NOTIFY_ADMIN marqueur quel que soit le niveau de journalisation. Voir déclenchement basé sur un marqueur dans la documentation de consignation. Vous pouvez également combiner des niveaux de journalisation et des marqueurs pour le déclenchement.

  2. Filtrage : Vous pouvez par exemple colorer/marquer tous vos journaux liés à la persistance (dans divers fichiers de classe) de la couleur "DB". Vous pouvez ensuite filtrer pour "DB": désactivez la journalisation sauf pour les instructions de journal marquées avec DB. Voir le chapitre sur les filtres dans la documentation de logback pour plus d'informations (recherchez MarkerFilter).

Avant l'avènement des marqueurs, pour obtenir un comportement similaire, vous aviez l'option 1) d'utiliser des niveaux personnalisés 2) d'utiliser des noms de journalisation modifiés. L'API SLF4J ne prend actuellement pas en charge les niveaux personnalisés. En ce qui concerne l’option 2, il est possible de créer un suffixe (ou de préfixer) le nom des enregistreurs si un ou deux enregistreurs doivent être modifiés. L'approche devient peu pratique dès que trois ou plus de trois enregistreurs doivent être "sous-classés" car les fichiers de configuration associés deviennent ingérables.

92
Ceki