„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So aktivieren Sie die MongoDB-Abfrageprotokollierung in reaktivem Java für Quarkus mit Panache

So aktivieren Sie die MongoDB-Abfrageprotokollierung in reaktivem Java für Quarkus mit Panache

Veröffentlicht am 30.07.2024
Durchsuche:120

Behalten Sie es hier, damit jeder nach mir diese Konfigurationen leicht finden kann.

Bei meiner Arbeit habe ich einen Microservice mit Java im reaktiven Stil geschrieben. Ich verwende Mongodb auch mit Elan. Kürzlich hatte ich ein Problem, bei dem eine meiner Abfragen von Mongo Compass aus einwandfrei funktionierte, bei Panache jedoch nicht wie erwartet. Also musste ich die Abfrage sehen, die Panache generierte.

Das offizielle Dokument von Quarkus bietet eine Möglichkeit, Mongodb-Abfragen in der Ausgabe zu protokollieren. Leider funktioniert es nur für nicht reaktives Java und der Leitfaden erwähnt dies nicht richtig.

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

Zuerst dachte ich, dass meine Projektkonfiguration aus irgendeinem Grund vielleicht falsch sei oder dass die Konfigurationen widersprüchlich seien und deshalb die Protokolle nicht angezeigt würden. Ich habe nie darüber nachgedacht, was das Problem bei der reaktiven Codierung sein könnte. Also habe ich das Problem auf andere Weise behoben und die richtige Lösung für mein Problem gefunden.

Danach wurde ich etwas verunsichert und fragte mich immer wieder, warum die Abfrageprotokollierung nicht funktionierte, und war frustriert. Dann schaute ich mir in einem Heureka-Moment den Konfigurationsschlüssel genau an und konnte deutlich sehen, dass das Protokoll eine Kategorie io.quarkus.mongodb.panache.common.runtime aktivierte, also machte ich mich auf die Suche nach diesem Paket. In meiner Jetbrains-IDE habe ich es gefunden und kann deutlich erkennen, dass es ein common.runtime.CommonPanacheQueryImpl und ein weiteres common.reactive.runtime.CommonReactivePanacheQueryImpl gibt.

Folder structure of the package

Also habe ich versucht, nach dieser Kategorie zu filtern, und es hat funktioniert :)
Die Lösung besteht also darin, DEBUG für diese Kategorie zu aktivieren. Fügen Sie diese Zeile also zu Ihren application.properties hinzu.

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

Jetzt funktioniert die Protokollierung

Query logging working

Bonus

Bei der Suche habe ich eine andere Möglichkeit gefunden, die Abfrageprotokollierung zu aktivieren, aber es erfolgt die Protokollierung über den Mongodb-Treiber. Um es zu aktivieren, fügen Sie dies einfach zu application.properties hinzu

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

Das Ergebnis sieht so aus, es gibt auch das Ergebnis aus der Datenbank aus.

MongoDB driver logging

Ich dachte nur, dass ich diese Konfigurationen hier als Referenz für jemanden poste, der reaktives Java mit Elan betreibt. Da ich eines meiner Wochenenden damit verbracht habe, dies und andere Dinge herauszufinden. Ich werde wahrscheinlich einen längeren Beitrag über meine Reise als Senior Software Engineer schreiben, um ein Problem mit der Panache-Fähigkeit zu beheben und wie ein Junior damit umgehen könnte und was mein schrittweiser Denkprozess dabei war.

Ich habe das alles gelernt, weil ich mich immer wieder gefragt habe: „Warum sollte es nicht funktionieren?“ und es störte mich immer wieder.

Verweise

  1. Meine eigenen Notizen
  2. Quarkus-Dokumente
  3. Eine Github-Diskussion
Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/minhaz1217/how-to-enable-mongodb-query-logging-in-reactive-java-for-quarkus-with-panache-22pa?1 Falls ein Verstoß vorliegt Bitte kontaktieren Sie Study_golang @163.comdelete
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3