Spring Boot을 사용하여 MongoDB 쿼리 기록
내 Spring Boot 앱에서 모든 MongoDB 쿼리를 기록할 수 있습니까?시도해 봤습니다.
logging.level.org.springframework.data.document.mongodb=INFO
log4j.category.org.springframework.data.document.mongodb=INFO
하지만 그것은 작동하지 않았다.
실제 쿼리는 DEBUG 수준의 MongoTemplate 인스턴스에 의해 기록됩니다.
에 org.springframework.data.mongodb.core.MongoTemplate
DEBUG
따라서 쿼리 로깅을 사용할 수 있습니다.
예를 들어, 다음 행을 application.propertiese 파일에 추가합니다.
logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG
물론 Spring Boot에서 제공하는 외부 구성 옵션을 사용하여 로그 수준을 변경할 수도 있습니다.
로그는 다음과 같습니다.
2018-11-26 19:23:16.574 DEBUG 15668 --- [nio-8081-exec-2]
os.s.data.mongodb.core.MongoTemplate : 쿼를사여찾습다니하. {"status" : "ACTIVE", "항목": : 필드 : _id " : {"$oid" : "5bfbcde45ac3366ad70cdb9f"} 파일 {{}}개
mongodb를에는 mongodb를 합니다.logging.level.org.springframework.data.mongodb.core.ReactiveMongoTemplate=DEBUG
이 방법은 조금 더 길지만 훨씬 더 많이 해결됩니다.우리는 스프링 부트 관리 서버라는 도구를 사용할 것입니다.
먼저 일부 종속성을 포함해야 합니다.
<!--Dependency for registering your app as a Spring Boot Admin Server--> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server</artifactId> <version>1.3.3</version> </dependency> <!--Provide a nice looking ui--> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> <version>1.3.3</version> </dependency> <!--Dependency for registering your app as a Spring Boot Admin Client--> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId> </dependency>
"Spring Boot Admin"을 합니다.
@EnableAdminServer
.@SpringBootApplication @EnableAdminServer public class Application { public static void main(String[] args) { // ... your code as before ... } }
의 신의에서.
application.properties
다음을 추가합니다.앱을 여전히 사용 중인 Spring Boot Admin 서버에 등록합니다.
spring.boot.admin.url=http://localhost:8031
Spring Boot Admin 서버에 클라이언트를 찾을 위치를 지시합니다.
spring.boot.admin.client.service-url=http://localhost:8031 spring.boot.admin.client.management-url=http://localhost:8031 spring.boot.admin.client.health-url=http://localhost:8031/health
의 신의에서.
logback.xml
행을 .<jmxConfigurator/>
이를 통해 JMX를 통해 로그백을 구성할 수 있습니다. 자세한 내용은 여기를 참조하십시오.
그리고 voila 당신은 끝났습니다.이제 런타임에 로거의 디버그 수준을 변경할 수 있습니다.
Admin Spring Boot Admin URL)을 방문하십시오. 이 경우에는 여기를 참조하십시오.http:/localhost:8031
).
ii. 등록된 애플리케이션(클라이언트) 목록이 홈 페이지에 표시됩니다.
iii 클릭 Details
등록된 클라이언트에 대해 다른 페이지로 이동합니다.
iv를 합니다. 다음을 클릭합니다.Logging
프로그램에 등록된 모든 로거를 나열하는 탭입니다.
로그 수준을 변경하면 실행 시 로그 수준이 변경됩니다.다음은 당신이 기대하는 것의 일부입니다.
쿼리를 MongoDB를 MongoTemplate
을 " " " " " 로 변경합니다.DEBUG
.
Spring Boot Admin 버전 2.*.*의 경우 다음 구성을 사용합니다.
spring.boot.admin.client.url=http://localhost:8031
Spring Framework를 처음 사용하지만 두 항목을 애플리케이션 구성 파일에 추가했습니다.
logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG
logging.level.org.springframework.data.mongodb.core.ReactiveMongoTemplate=DEBUG
콘솔에 기록된 쿼리가 없습니다.
그런 다음 응용 프로그램에 대한 DEBUG 수준을 활성화하고 로그 출력에서 쿼리에 대한 로그 항목을 찾습니다.
2022-09-15 08:55:26.945 DEBUG 4388 --- [ main]
org.mongodb.driver.protocol.command : Sending command '{ "find" : "movies",
"filter" : { "countries" : { "$all" : ["Russia", "Japan"] } },
그래서 애플리케이션 로그 수준을 INFO로 되돌리고 org.mongodb.driver.protocol.command 네임스페이스에 대한 DEBUG 수준을 활성화했습니다.
logging.level.org.mongodb.driver.protocol.command=DEBUG
이것이 누군가에게 도움이 되기를 바랍니다.
언급URL : https://stackoverflow.com/questions/39217351/log-mongodb-queries-with-spring-boot
'programing' 카테고리의 다른 글
MySQL 데이터베이스에 BOOL 값을 삽입하는 방법 (0) | 2023.09.02 |
---|---|
Logback-test.xml 구성에서 하나의 로그 파일이 아닌 두 개의 로그 파일을 생성하시겠습니까? (0) | 2023.09.02 |
모듈의 Python 명명 규칙 (0) | 2023.08.28 |
중복된 개별 반품 선택 (0) | 2023.08.28 |
win32com을 사용하여 Excel 파일에 액세스할 때 문제 발생 (0) | 2023.08.28 |