J'ai cette application Web qui enregistre assez fortement. Nous avons implémenté un appel à MDC
pour chaque thread demandeur afin de pouvoir tracer un utilisateur dans nos journaux.Enregistrement des valeurs de clé facultatives
Un logmessage pourrait se présenter comme suit:
INFO [2017-10-09 10:10:55,841] user_uuid=123-123-123 com.myapp.SomeClass: Some log message...
Maintenant, le problème est que la plupart du temps, aucun utilisateur actuel existe, et nous ne pas utiliser pour le champ user_uuid
dans l'exemple du journal ci-dessus. Ainsi, au lieu, il ressemblera à ceci:
INFO [2017-10-09 10:10:55,841] user_uuid= com.myapp.SomeClass: Some log message...
Est-il possible de ne pas écrire la clé MDC valeur & dans le journal s'il n'y a pas de valeur MDC? Un format de journal que je n'ai pas encore trouvé?
Je veux qu'il ressemble à cela, si aucune valeur MDC se trouve:
INFO [2017-10-09 10:10:55,841] com.myapp.SomeClass: Some log message...
Les exemples ci-dessus (MDC) sont configurés comme ceci:
%-5p [%d{ISO8601,UTC}] user_uuid=%mdc{user_uuid:-} %c: %m%n%rEx
Vous pouvez simplement afficher le MDC complet (cela nécessite bien sûr de n'y stocker que des informations importantes), puis enregistrer uniquement les contenus existants. Dans votre exemple, vous avez codé en dur la partie 'user_uuid =', donc cela ne va nulle part. – Kayaman
Voir https://stackoverflow.com/questions/24616745/how-to-conditionally-add-text-from-mdc-on-a-log4j-pattern pour un doublon. – Kayaman