programing

Spring Boot을 사용하여 MongoDB 쿼리 기록

css3 2023. 9. 2. 08:42

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.MongoTemplateDEBUG따라서 쿼리 로깅을 사용할 수 있습니다.

예를 들어, 다음 행을 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

이 방법은 조금 더 길지만 훨씬 더 많이 해결됩니다.우리는 스프링 부트 관리 서버라는 도구를 사용할 것입니다.

  1. 먼저 일부 종속성을 포함해야 합니다.

    <!--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>
    
  2. "Spring Boot Admin"을 합니다.@EnableAdminServer.

    @SpringBootApplication
    @EnableAdminServer
    public class Application {
       public static void main(String[] args) {
          // ... your code as before ...
       }
    }
    
  3. 의 신의에서.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
    
  4. 의 신의에서.logback.xml 행을 .<jmxConfigurator/>이를 통해 JMX를 통해 로그백을 구성할 수 있습니다. 자세한 내용은 여기를 참조하십시오.

그리고 voila 당신은 끝났습니다.이제 런타임에 로거의 디버그 수준을 변경할 수 있습니다.

Admin Spring Boot Admin URL)을 방문하십시오. 이 경우에는 여기를 참조하십시오.http:/localhost:8031).

ii. 등록된 애플리케이션(클라이언트) 목록이 홈 페이지에 표시됩니다.

iii 클릭 Details등록된 클라이언트에 대해 다른 페이지로 이동합니다.

iv를 합니다. 다음을 클릭합니다.Logging프로그램에 등록된 모든 로거를 나열하는 탭입니다.

로그 수준을 변경하면 실행 시 로그 수준이 변경됩니다.다음은 당신이 기대하는 것의 일부입니다.

Change logging levels at runtime

쿼리를 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