Вы можете создать проект от start.spring.io до этой проблемы из https://start.spring.io/starter.zip?type=gradle-project&language=java&bootVersion=2.2.5.RELEASE&baseDir=demo&groupId=com.example&artifactId=demo&name = демонстрационный & Description = демонстрационная% 20project% 20for% 20Spring% 20Boot & PackageName = com.example.demo & упаковка = банка & javaVersion = 1,8 & зависимости = h2, данные JPA, веб
У меня есть многомодульное приложение SpringBoot, созданное с помощью gradle, есть куча интеграционных тестов SpringBoot. Когда я делаю сборку, я получаю некоторый вывод из завершения SpringBoot на консоль, как показано ниже. Как отключить этот выход?
± |master ↑1 {1} S:3 U:10 ✗| → ./gradlew build
> Task :core:test
2020-02-01 11:20:33.529 INFO 24114 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-02-01 11:20:33.531 INFO 24114 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2020-02-01 11:20:33.538 INFO 24114 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
> Task :email:test
2020-02-01 11:20:43.820 INFO 24150 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-02-01 11:20:43.820 INFO 24150 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-02-01 11:20:43.822 INFO 24150 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown initiated...
2020-02-01 11:20:43.822 INFO 24150 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2020-02-01 11:20:43.830 INFO 24150 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
2020-02-01 11:20:43.830 INFO 24150 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown completed.
> Task :security:test
2020-02-01 11:20:54.941 INFO 24188 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-02-01 11:20:54.944 INFO 24188 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2020-02-01 11:20:54.952 INFO 24188 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.1.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 46s
57 actionable tasks: 54 executed, 3 up-to-date
Для справки, приложение, созданное из start.spring.io с Gradle, не выводит на экран
./gradlew build
BUILD SUCCESSFUL in 779ms
5 actionable tasks: 5 up-to-date
Вместо этого вывод помещается в build/reports/
В моем случае я НЕ внес никаких изменений в конфигурацию регистрации, которая идет с загрузкой. Нет logback.xml или изменений в application.yml для уровней ведения журнала. Я ожидаю, что gradle перехватывает систему и системную ошибку и отправляет их на, build/reports/
но некоторые выходы, похоже, выходят из системы.
источник
INFO
(или удаление полностью).INFO
строки журнала уровня. Как вы видите, они происходят из перехватчиков завершения работы и заканчиваются там, где когда-либо настроено ведение журнала. Я предполагаю, что теоретически сообщения могут оказаться в другом месте, чем предполагалось, из-за изменения конфигурации журналирования и последующего асинхронного перехвата. Таким образом, по умолчанию эти строки выводятся на консоль, поскольку предыдущий конфиг был выгружен. Может быть.Ответы:
@eskatos прав. Диспетчер журналов отключается после выполнения контрольного примера перед завершением рабочего процесса. Все перехватчики завершения выполняются, когда рабочий процесс завершается, и перенаправляются обратно на консоль.
Поскольку эти сообщения генерируются при весенней загрузке, лучшее место было бы отфильтровать сообщения о завершении работы с помощью xml конфигурации теста logback.
Что-то вроде logback-test.xml внутри src / test / resources
build.gradle
источник
Можно отключить вывод с или решить , что войти из задачи, для того , чтобы контролировать стандартный вывод / STDERR тестовой виртуальной машины Java:
TestLoggingContainer
testLogging.showStandardStreams = false
onOutput
Test
Эти потоки являются
TestLogEvent
STANDARD_OUT
&STANDARD_ERROR
, которые приходят из JVM. Когда можно определитьevent.message
содержаниеextShutdownHook
, можно пропустить регистрацию.источник
INFO
это уровень ведения журнала по умолчанию для Spring; можно установить другие уровни журнала, например.logging.level.org.springframework=TRACE
в качестве переменной среды.Я мог бы скрыть специфичные для данных пружины тестовые журналы (основанные на этом стартере пружин ), добавив следующее
application.properties
в src / test / resources:logging.level.org.springframework
не будет влиять, например, наcom.zaxxer.hikari
регистратор, но у вас есть гибкие настройки здесь.(
root=ERROR
это как "подход кувалдой").(
src/main/resources
также возможно, но действует не только во время тестирования, но и во время выполнения приложения) (application.properties
является только одним из многих возможных «местоположений» для этого свойства ... см. также: https://docs.spring.io/spring-boot/ docs / current / reference / html / appendix-application-properties.html )С этим я получаю "тихий" вывод gradle, также на
clean build
:источник
Gradle имеет тихий режим.
./gradlew build -q
Но вам все еще нужна информация о тестах. Вы можете использовать Jacoco и Sonarqube. Это сработало для меня здесь и здесь .
источник