Puede generar un proyecto desde start.spring.io a este problema desde 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
Tengo una aplicación SpringBoot de varios módulos construida con gradle, hay un montón de pruebas de integración SpringBoot. Cuando hago una compilación, termino con una salida del cierre de SpringBoot a la consola como se muestra a continuación. ¿Cómo apago esta salida?
± |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
Como referencia, una aplicación creada desde start.spring.io con gradle no produce ningún resultado en la pantalla
./gradlew build
BUILD SUCCESSFUL in 779ms
5 actionable tasks: 5 up-to-date
En cambio, la salida se coloca en build/reports/
En mi caso, NO he realizado ningún cambio en la configuración de registro que viene con el arranque. No hay logback.xml o cambios en application.yml para los niveles de registro. Espero que Gradle esté capturando el sistema y el error del sistema y enviándolos al, build/reports/
pero algunas salidas parecen estar escapando al sistema.
fuente
INFO
(o eliminar por completo).INFO
líneas de registro de nivel. Como se ve, se originan en los ganchos de apagado y terminan donde se configura el registro. Supongo que, en teoría, los mensajes podrían terminar en un lugar diferente al previsto, debido al cambio de configuración de registro y la ejecución de los ganchos de forma asincrónica después. Por lo tanto, las líneas serían predeterminadas a la consola, ya que la configuración anterior se descargó. Tal vez.Respuestas:
@eskatos tiene razón. El administrador de registro se debilita después de ejecutar el caso de prueba antes de cerrar el proceso de trabajo. Todos los ganchos de apagado se ejecutan cuando se cierra el proceso de trabajo y se redirigen a la consola.
Como estos mensajes son generados por el arranque de primavera, el mejor lugar sería filtrar los mensajes de apagado utilizando la configuración de prueba de logback xml.
Algo como logback-test.xml dentro de src / test / resources
build.gradle
fuente
Uno puede deshabilitar la salida con o decidir qué registrar de una tarea, para controlar el stdout / stderr de la JVM de prueba:
TestLoggingContainer
testLogging.showStandardStreams = false
onOutput
Test
Estas transmisiones son
TestLogEvent
STANDARD_OUT
&STANDARD_ERROR
, que provienen de la JVM. Cuando se puede determinar unevent.message
contenidoextShutdownHook
, se puede omitir el registro.fuente
INFO
es el nivel de registro predeterminado para Spring; uno puede establecer otros niveles de registro, por ejemplo.logging.level.org.springframework=TRACE
como variable ambiental.Podría ocultar el registro de prueba específico de los datos de primavera (basado en este inicio de primavera ) agregando lo siguiente
application.properties
a src / test / resources:logging.level.org.springframework
no tendrá efecto, por ejemplocom.zaxxer.hikari
, en el registrador, pero aquí tiene opciones flexibles .(
root=ERROR
es como el "enfoque del martillo de trineo").(
src/main/resources
también es posible, pero tiene efecto no solo en la prueba sino también en el tiempo de ejecución de la aplicación) (application.properties
es solo una de las muchas "ubicaciones" posibles para esta propiedad ... ver también: https://docs.spring.io/spring-boot/ docs / current / reference / html / appendix-application-properties.html )Con esto obtengo una salida gradle "silenciosa", también en
clean build
:fuente
Gradle tiene un modo silencioso.
./gradlew build -q
Pero aún necesita información sobre las pruebas. puedes usar jacoco y sonarqube. Funcionó para mí aquí y aquí .
fuente