Maison > Java > javaDidacticiel > 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

PHPz
Libérer: 2024-07-17 09:52:19
original
771 Les gens l'ont consulté

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

Dans mon travail, j'écris 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 que le panache générait.

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
Copier après la connexion

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 ça 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
Copier après la connexion

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
Copier après la connexion

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.

Références

  1. Mes propres notes
  2. Documents Quarkus
  3. Une discussion sur Github

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal