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