2016-08-30 3 views
4

Возможно ли зарегистрировать все запросы MongoDB в моем приложении Spring Boot? Я пробовал:Log MongoDB запросы с Spring Boot

logging.level.org.springframework.data.document.mongodb=INFO 
log4j.category.org.springframework.data.document.mongodb=INFO 

Но это не сработало.

+1

Пожалуйста, измените уровень журнала на DEBUG и попробуйте. Кроме того, пожалуйста, укажите, на каком классе вы конкретно смотрите? – notionquest

ответ

5

Этот метод немного дольше, но он решает намного больше. Мы собираемся использовать инструмент под названием Spring Boot Admin Server.

  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 Загрузочный Admin Server с помощью аннотации @EnableAdminServer.

    @SpringBootApplication 
    @EnableAdminServer 
    public class Application { 
        public static void main(String[] args) { 
         // ... your code as before ... 
        } 
    } 
    
  3. В вашей application.properties добавить следующее:

    Зарегистрируйте свое приложение на сервер Spring загрузки администратора, который до сих пор приложение

    spring.boot.admin.url=http://localhost:8031 
    

    Instruct Spring Загрузочный Admin Server, где найти клиента

    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. Более подробная информация here

... и вуаля вы сделали. Теперь вы можете изменить уровень отладки для любого регистратора во время выполнения.

i. Просто посетите URL-адрес вашего сервера загрузки Spring Boot - в нашем случае здесь (http:/localhost:8031).

ii. Список зарегистрированных приложений (клиентов) будет отображаться на главной странице.

iii. Нажмите Details против зарегистрированных клиентов, которые перенесут вас на другую страницу.

iv. Перейдите на вкладку Logging, в которой будут перечислены все регистраторы, зарегистрированные в вашем приложении.

v. Вы можете изменить уровни журнала, это изменит уровень ведения журнала во время выполнения. Вот отрывок из того, что вы ожидаете

Change logging levels at runtime

Чтобы ответить на ваш вопрос, если вы хотите, чтобы увидеть запросы MongoDB, просто посмотрите на MongoTemplate и изменить уровень протоколирования DEBUG.

+3

Hi downvoter, любезно поделитесь с сообществом stackoverflow, почему вы проголосовали. Это могло бы помочь улучшить ответ. – Kihats

1

попробовать это одно:

просто добавьте эту строку в приложении.propertiese и проверить вывод консоли после запуска любого запроса MongoRepository.

logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG 
+0

Хотя это может дать ответ на вопрос, требуется некоторое объяснение. Пожалуйста, уточните вопрос с некоторым объяснением того, как и почему это решение работает. –

+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего после. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. –

Смежные вопросы