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.
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
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.
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.
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