나 이후의 누구든지 이 구성을 쉽게 찾을 수 있도록 여기에 보관하세요.
저는 직장에서 반응형 스타일의 Java를 사용하여 마이크로서비스를 작성해 왔습니다. 나는 또한 panache와 함께 mongodb를 사용하고 있습니다. 최근에 내 쿼리 중 하나가 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에서도 결과를 출력합니다.
Panache로 반응형 Java를 수행하는 누군가를 참조하기 위해 이 구성을 여기에 게시하겠다고 생각했습니다. 나는 주말 중 하나를 이것과 다른 것들에 투자했습니다. 아마도 저는 고위 소프트웨어 엔지니어로서 위풍당당한 기능 문제를 디버깅하고 후배가 이를 탐색할 수 있는 방법과 이 과정에서 저의 단계별 사고 과정이 무엇인지에 대해 더 긴 게시물을 작성할 것입니다.
저는 "왜 작동하지 않을까?"라고 스스로에게 계속 질문했기 때문에 이 모든 것을 배웠습니다. 그게 계속 나를 괴롭혔어요.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3