将其保留在这里,以便我之后的任何人都可以轻松找到这些配置。
在我的工作中,我一直在用 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。
所以我尝试按该类别进行过滤,结果成功了:)
所以解决方案是在这个类别上启用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的结果。
我只是想在这里发布这些配置,作为对那些正在用华丽的方式进行响应式java的人的参考。因为我花了一个周末来解决这个问题以及其他事情。我可能会写一篇更长的文章,讲述我作为一名高级软件工程师调试华丽能力问题的旅程,以及初级人员如何解决这些问题,以及在此过程中我一步一步的思考过程。
我学到了所有这些,因为我不断问自己“为什么它不起作用?”这一直困扰着我。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3