首页 >Java >java教程 >如何在反应式java中为quarkus启用mongodb查询日志记录

如何在反应式java中为quarkus启用mongodb查询日志记录

PHPz
PHPz原创
2024-07-17 09:52:19751浏览

将其保留在这里,以便我之后的任何人都可以轻松找到这些配置。

在我的工作中,我一直在用 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