Heim  >  Artikel  >  Java  >  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

PHPz
PHPzOriginal
2024-07-17 09:52:19744Durchsuche

Bewahren Sie es hier auf, 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

Während 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.

Das alles habe ich gelernt, weil ich mich immer wieder gefragt habe: „Warum sollte es nicht funktionieren?“ und es hat mich immer wieder gestört.

Referenzen

  1. Meine eigenen Notizen
  2. Quarkus-Dokumente
  3. Eine Github-Diskussion

Das obige ist der detaillierte Inhalt vonSo aktivieren Sie die Mongodb-Abfrageprotokollierung in reaktivem Java für Quarkus mit Panache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn