私以降の誰もがこれらの構成を簡単に見つけられるように、ここに残しておきます。
私の仕事では、リアクティブ スタイルの Java を使用してマイクロサービスを作成しています。私も mongodb を panache で使用しています。最近、クエリの 1 つが mongo compass からは完璧に機能していましたが、panache では期待どおりに機能しなかったという問題がありました。そのため、panache が生成しているクエリを確認する必要がありました。
quarkus の公式ドキュメントでは、mongodb クエリを出力に記録する方法が提供されています。残念ながら、これは非リアクティブ Java でのみ機能し、ガイドではこれについて適切に言及されていません。
quarkus.log.category."io.quarkus.mongodb.panache.common.runtime".level=DEBUG
最初は、何らかの理由でプロジェクトの構成が間違っているか、構成が競合しているためログが表示されないのではないかと思いました。リアクティブコーディングがどのような問題なのか、考えたこともありませんでした。そこで、他の方法で問題をデバッグし、問題に対する適切な解決策を見つけました。
その後、私は少し面倒になって、なぜクエリログが機能しないのかを自問し続け、イライラしてきました。それから、思い当たる節があり、構成キーを注意深く見たところ、ログでカテゴリー io.quarkus.mongodb.panache.common.runtime が有効になっていることがはっきりとわかり、そのパッケージを探しに行きました。 Jetbrains IDE からそれを見つけたところ、common.runtime.CommonPanacheQueryImpl と別の common.reactive.runtime.CommonReactivePanacheQueryImpl があることがはっきりとわかります。
そこで、そのカテゴリでフィルタリングしようとしましたが、うまくいきました:)
したがって、解決策は、このカテゴリで DEBUG を有効にするだけです。したがって、この行を application.properties.
に追加します。
quarkus.log.category."io.quarkus.mongodb.panache.common.reactive.runtime".level=DEBUG
これでログが機能するようになりました
検索中にクエリログを有効にする別の方法を見つけましたが、それはmongodbドライバーからログを記録しています。有効にするには、これを application.properties
に追加するだけです。
quarkus.log.category."org.mongodb.driver.protocol.command".level=DEBUG
結果は次のようになります。データベースからの結果も出力されます。
panache でリアクティブ Java を実行している人への参考として、これらの構成をここに投稿しようと思いました。私は週末の 1 つをこれや他のことを考えるのに費やしました。おそらく、上級ソフトウェア エンジニアとしての万能機能の問題をデバッグするための長い記事を作成する予定です。また、後輩がこれらの問題にどのように対処するか、また、その際の私のステップバイステップの思考プロセスについても説明します。
私がこれらすべてを学んだのは、「なぜうまくいかないのか?」と自問し続けたからです。そしてそれは私を悩ませ続けました。
以上がPanache を使用して quarkus のリアクティブ Java で mongodb クエリログを有効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。