【发布时间】:2020-05-18 00:08:07
【问题描述】:
你可以从https://start.spring.io/starter.zip?type=gradle-project&language=java&bootVersion=2.2.5.RELEASE&baseDir=demo&groupId=com.example&artifactId=demo&name=demo&description=Demo%20project%20for%20Spring%20Boot&packageName=com.example.demo&packaging=jar&javaVersion=1.8&dependencies=h2,data-jpa,web这个issue从start.spring.io生成一个项目
我有一个用 gradle 构建的多模块 springBoot 应用程序,有一堆 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
作为参考,使用 gradle 从 start.spring.io 创建的应用程序不会在屏幕上产生任何输出
./gradlew build
BUILD SUCCESSFUL in 779ms
5 actionable tasks: 5 up-to-date
而是将输出放在build/reports/
在我的情况下,我没有对引导附带的日志记录配置进行任何更改。没有 logback.xml,或对日志级别的 application.yml 进行更改。我期待 gradle 正在捕获系统输出和系统错误并将它们发送到build/reports/,但一些输出似乎正在逃逸到系统输出。
【问题讨论】:
-
将这些包或类的日志级别调整为低于
INFO(或完全删除)。 -
这些是
INFO级别的日志行。如您所见,它们源自关闭挂钩,并且它们最终出现在配置日志记录的位置。我想从理论上讲,由于日志记录配置的更改以及随后异步执行的钩子,消息可能最终出现在与预期不同的位置。所以它会将这些行默认到控制台,因为之前的配置已被卸载。也许吧。 -
你能添加你的测试类,以及你的主应用程序类吗?以及任何与数据源配置相关的 application.properties/yml?
-
可能是关闭挂钩发生在 Gradle 测试工作进程在其输出重定向被拆除后被关闭时。这可能值得一个 gradle/gradle 问题来开启讨论。
-
理想情况下,spring boot 在您的测试中是关闭的,而不必依赖 jvm 关闭挂钩,这将是一个 spring 问题。
标签: java spring-boot gradle