Обратный журнал Spring Boot SLF4j

#spring #junit #logback #spring-test #spring-logback

#весна #junit #Возврат в систему #spring-тест #возврат журнала с пружинной загрузкой

Вопрос:

У меня есть небольшое приложение SpringBoot MvC. с этими зависимостями:

 <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>${spring-boot-starter-test.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>
  

Я помещаю logback-test.xml файл в /src/test/resources/ , и когда я запускаю тест, он работает нормально

 <configuration debug="true" scan="true" scanPeriod="150 seconds">
    <property name="LOG_DIR" value="logs-test" />
    <appender name="FILE_INFO"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_DIR}/app_info.log</file>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} -
                %msg%n
            </Pattern>
....
</configuration>
  

но когда я добавляю в файл /src/test/resources/application.properties:

   # logging level
logging.level.root=error
    logging.level.org.springframework=ERROR
    logging.level.com.plats.bruts=ERROR
  

но, похоже, это не работает, потому что я вижу уровень отладки на консоли при запуске теста:

 10:16:08.039 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class eu.europa.ec.oib.kw.frontoffice.repository.autorisation.AutorisationPersonneRepositoryTest]
10:16:08.047 [main] DEBUG org.springframework.test.context.BootstrapUtils 
  

Комментарии:

1. На какой уровень установлен корневой регистратор?

2. он не задан в application.properties

3. он должен быть установлен в файле logback. <root level="level">... appenders ...</root>

4. но я хочу использовать только application.properties вместо файла .xml, если это возможно

5. Почему бы не использовать logback для ваших конфигураций журналов, я уверен, что вы не можете смешивать application.properties конфигурацию журнала и logback.

Ответ №1:

Обязательно используйте @SpringBootTest аннотации при тестировании приложений spring boot для spring boot, чтобы загрузить ведение журнала по умолчанию.

По большей части вы можете configure обойтись без использования пользовательского XML-файла logback, и им можно управлять с помощью application.properties.

Для тестовых случаев, отличных от spring boot, вы должны предоставить свой собственный XML-файл logback.

Для пользовательской конфигурации вы должны создать свой файл на основе base.xml значение по умолчанию указано в библиотеке spring boot (определено как файловое, так и консольное приложение), поэтому вы можете импортировать значения по умолчанию и добавлять конкретную конфигурацию в зависимости от ваших потребностей.

Таким образом, вы по-прежнему управляете свойствами default configuration attributes приложения from для тестов spring boot. Также переименуйте файл, чтобы он заканчивался расширением spring, чтобы spring boot мог контролировать инициализацию ведения журнала.

Что-то вроде

 <configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    !-- custom configuration goes here --!
</configuration>