#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>