首頁  >  文章  >  Java  >  如何在反應式java中為quarkus啟用mongodb查詢日誌記錄

如何在反應式java中為quarkus啟用mongodb查詢日誌記錄

PHPz
PHPz原創
2024-07-17 09:52:19745瀏覽

將其保留在這裡,以便我之後的任何人都可以輕鬆找到這些配置。

在我的工作中,我一直在用 java 寫反應式微服務。我也在使用 mongodb 和 panache。最近,我遇到了一個問題,我的一個查詢在 mongo compass 中運行得很好,但在華麗的情況下卻沒有按預期運行。所以我需要查看 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。

Folder structure of the package

所以我嘗試按該類別進行過濾,結果成功了:)
所以解決方案是在這個類別上啟用DEBUG。因此,將此行新增至您的 application.properties 中。

quarkus.log.category."io.quarkus.mongodb.panache.common.reactive.runtime".level=DEBUG

現在日誌記錄正在工作

Query logging working

獎金

在搜尋時,我找到了另一種啟用查詢日誌記錄的方法,但它是從 mongodb 驅動程式進行日誌記錄。要啟用它,只需將其新增至 application.properties

quarkus.log.category."org.mongodb.driver.protocol.command".level=DEBUG

結果是這樣的,它也輸出了db的結果。

MongoDB driver logging

我只是想在這裡發布這些配置,作為對那些正在以華麗的方式進行響應式java的人的參考。因為我花了一個週末來解決這個問題以及其他事情。我可能會寫一篇更長的文章,講述我作為高級軟體工程師調試華麗能力問題的旅程,以及初級人員如何解決這些問題,以及在此過程中我一步一步的思考過程。

我學到了所有這些,因為我不斷問自己「為什麼它不起作用?」這一直困擾著我。

參考

  1. 我自己的筆記
  2. Quarkus 文件
  3. github 討論

以上是如何在反應式java中為quarkus啟用mongodb查詢日誌記錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn