"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment activer la journalisation des requêtes MongoDB dans Java réactif pour Quarkus avec panache

Comment activer la journalisation des requêtes MongoDB dans Java réactif pour Quarkus avec panache

Publié le 2024-07-30
Parcourir:838

Je le garde ici pour que quiconque après moi puisse trouver ces configurations facilement.

Dans mon travail, j'ai écrit un microservice avec Java avec un style réactif. J'utilise également mongodb avec panache. Récemment, j'ai eu un problème où une de mes requêtes fonctionnait parfaitement à partir de Mongo Compass, mais avec panache, elle ne fonctionnait pas comme prévu. J'avais donc besoin de voir la requête générée par Panache.

Le document officiel du quarkus fournit un moyen de consigner la requête mongodb en sortie. Malheureusement, cela ne fonctionne que pour Java non réactif et le guide ne le mentionne pas correctement.

quarkus.log.category."io.quarkus.mongodb.panache.common.runtime".level=DEBUG

Au début, je pensais que, pour une raison quelconque, la configuration de mon projet était peut-être erronée ou que les configurations étaient en conflit et c'est pourquoi il n'affichait pas les journaux. Je n'ai jamais pensé à quel codage réactif était le problème. J'ai donc débogué le problème d'une autre manière et trouvé la solution appropriée à mon problème.

Après cela, j'ai été quelque peu dérangé et j'ai continué à me demander pourquoi la journalisation des requêtes ne fonctionnait pas et j'étais frustré. Puis, dans un instant eurêka, j'ai regardé attentivement la clé de configuration et je peux clairement voir que le journal activait une catégorie io.quarkus.mongodb.panache.common.runtime, alors je suis allé chercher ce package. Depuis mon IDE Jetbrains, je l'ai trouvé et je peux clairement voir qu'il existe un common.runtime.CommonPanacheQueryImpl et un autre common.reactive.runtime.CommonReactivePanacheQueryImpl.

Folder structure of the package

J'ai donc essayé de filtrer par cette catégorie et cela a fonctionné :)
La solution consiste donc simplement à activer DEBUG sur cette catégorie. Ajoutez donc cette ligne à votre application.properties.

quarkus.log.category."io.quarkus.mongodb.panache.common.reactive.runtime".level=DEBUG

Maintenant, la journalisation fonctionne

Query logging working

Prime

Lors de la recherche, j'ai trouvé un autre moyen d'activer la journalisation des requêtes, mais il s'agit de la journalisation à partir du pilote mongodb. Pour l'activer, ajoutez simplement ceci au application.properties

quarkus.log.category."org.mongodb.driver.protocol.command".level=DEBUG

Le résultat ressemble à ceci, il affiche également le résultat de la base de données.

MongoDB driver logging

Je pensais juste que je publierais ces configurations ici comme référence à quelqu'un qui fait du Java réactif avec panache. Comme j'ai consacré un de mes week-ends à comprendre cela ainsi que d'autres choses. Je ferai probablement un article plus long sur mon parcours en tant qu'ingénieur logiciel senior pour déboguer un problème de capacité de panache et comment un junior pourrait y faire face et quel a été mon processus de réflexion étape par étape au cours de cela.

J'ai appris tout cela parce que je n'arrêtais pas de me demander "pourquoi ça ne marcherait pas ?" et ça me dérangeait toujours.

Les références

  1. Mes propres notes
  2. Documents Quarkus
  3. Une discussion sur Github
Déclaration de sortie Cet article est reproduit sur : https://dev.to/minhaz1217/how-to-enable-mongodb-query-logging-in-reactive-java-for-quarkus-with-panache-22pa?1 En cas de violation , veuillez contacter study_golang @163.comdelete
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3