Nous utilisons la combinaison SLF4J + Logback dans notre projet depuis un certain temps maintenant et nous en sommes assez satisfaits, mais notre stratégie de journalisation est assez simple, utilisant des enregistreurs simples basés sur des classes et pas de trucs sophistiqués comme MDC ou Markers.
Ce que je veux savoir, c'est si quelqu'un dans la communauté utilise réellement ces fonctionnalités et comment elles sont utilisées pour améliorer la journalisation / le filtrage.
Je suis particulièrement intéressé par où, pourquoi et comment utiliser [1] les marqueurs pour la journalisation. Ils me semblent une fonctionnalité assez intéressante pour ajouter un contexte sémantique dans la journalisation - par exemple, alors qu'une classe peut gérer plusieurs problèmes, on peut utiliser des marqueurs spécifiques à une tâche / préoccupation pour discriminer les instructions de journal.
Quelles peuvent être les meilleures pratiques, conventions ou stratégies pour créer et utiliser des marqueurs dans la journalisation.
Mise à jour: Je suppose que ce que je recherche vraiment n'est pas tant pourquoi utiliser des marqueurs, mais plutôt la partie comment - y a-t-il quelques bonnes pratiques pour nommer les marqueurs (par exemple, utiliser du texte brut avec des espaces ou des noms de style de mot-clé délimités par tiret / soulignement / ponctuation ), devrait-il y avoir une sorte de pool de "noms standard", nommant des éléments basés sur les fonctions métier. Les questions que je peux probablement résoudre moi-même, mais si je veux utiliser ces fonctionnalités systématiquement et les présenter à une équipe de développeurs, il est logique d'avoir un ensemble de directives formalisables autour de ...
[1] - En demandant comment utiliser les marqueurs, je ne demande pas vraiment comment utiliser l'API (c'est vraiment assez simple) - je fais plutôt référence au niveau plus général de la façon dont on pourrait configurer la journalisation en utilisant des marqueurs de manière cohérente
Tout d'abord, MDC.
MDC est vraiment utile dans un environnement où vous avez une "entité" associée à un comportement. Un exemple typique: l'utilisateur interagit avec une application Web. Alors, disons que vous avez de nombreux utilisateurs qui jouent avec votre application Web. En utilisant MDC, vous pouvez facilement les suivre sans trop de tracas. Exemple simplifié:
Ici, vous utilisez MDC à deux endroits: pour le nom d'utilisateur et pour l'ID de session. De cette façon, vous pouvez facilement greper la session d'un utilisateur pour voir tout ce qu'il a fait.
Deuxièmement, les marqueurs.
Les marqueurs sont généralement utilisés pour des circonstances «spéciales», telles que l'envoi d'un e-mail à un administrateur pour des erreurs sérieusement critiques. Toutes les erreurs n'entrent pas toujours dans la même catégorie; certains doivent être traités de manière appropriée.
Ou, lorsqu'un utilisateur quitte votre service, il accède généralement à un journal INFO, mais vous pouvez également utiliser un marqueur pour de telles instances, si vous souhaitez que des événements tels que celui-ci soient placés dans un fichier journal séparé, afin que vous puissiez le surveiller. plus facilement pour la collecte statistique des utilisateurs qui abandonnent.
Règle de base:
la source
Les marqueurs peuvent être utilisés pour colorer ou marquer une seule instruction de journal. Ce que vous faites avec ces couleurs, c'est-à-dire les marqueurs, dépend entièrement de vous. Cependant, deux modèles semblent être communs (le premier plus courant que le second) pour l'utilisation des marqueurs.
Déclenchement : certains appendeurs peuvent être invités à effectuer une action en présence d'un certain marqueur. Par exemple,
SMTPAppender
peut être configuré pour envoyer un e-mail chaque fois qu'un événement de journalisation est marqué avec leNOTIFY_ADMIN
marqueur quel que soit le niveau de journalisation. Voir le déclenchement basé sur des marqueurs dans la documentation de logback. Vous pouvez également combiner des niveaux de journal et des marqueurs pour le déclenchement.Filtrage : vous pouvez par exemple colorer / marquer tous vos journaux liés à la persistance (dans divers fichiers de classes multiples) avec la couleur "DB". Vous pouvez ensuite filtrer pour "DB": désactiver la journalisation sauf pour les instructions de journal marquées avec DB. Consultez le chapitre sur les filtres dans la documentation de connexion pour plus d'informations (recherchez MarkerFilter).
la source
Tout comme un addendum, si vous utilisez logstash et que la journalisation json est activée, il existe une autre utilisation potentielle de Marker - pour les variables de journalisation à associer à un message de journal spécifique. C'est plus cohérent et plus facile à analyser que de l'inclure dans le corps du message. Très utile, si cela convient à votre cas d'utilisation.
Voir les détails ici:
https://github.com/logstash/logstash-logback-encoder#loggingevent_custom_event
la source