私以降の誰もがこれらの設定を簡単に見つけられるように、ここに残しておきます。
私の仕事では、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
結果は次のようになります。db.
の結果も出力されます。panache でリアクティブ Java を実行している人への参考として、これらの設定をここに投稿しようと思いました。私は週末の 1 つをこれや他のことを考えるのに費やしました。おそらく、上級ソフトウェア エンジニアとしての万能機能の問題をデバッグする過程と、後輩がこれらの問題にどのように対処するか、およびその際の私のステップバイステップの思考プロセスについて、さらに長い投稿を作成する予定です。
私がこれらすべてを学んだのは、「なぜうまくいかないのか?」と自分に問い続けてきたからです。そしてそれは私を悩ませ続けました。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3