Você pode gerar um projeto de start.spring.io para esse problema em 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 & descrição = Demonstração% 20projeto% 20for% 20Spring% 20Boot & packageName = com.example.demo & packaging = jar & javaVersion = 1.8 & dependencies = h2, data-jpa, web
Eu tenho um aplicativo springBoot multi-módulo construído com gradle, existem vários testes de integração do SpringBoot. Quando faço uma compilação, acabo com alguma saída do desligamento do SpringBoot para o console, como mostrado abaixo. Como desativo esta saída?
± |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
Para referência, um aplicativo criado a partir de start.spring.io com gradle não produz saída na tela
./gradlew build
BUILD SUCCESSFUL in 779ms
5 actionable tasks: 5 up-to-date
Em vez disso, a saída é colocada em build/reports/
No meu caso, NÃO fiz alterações na configuração de log que acompanha a inicialização. Não há logback.xml ou alterações no application.yml para níveis de log. Espero que o gradle esteja capturando o sistema e com erros do sistema e enviando-os para o, build/reports/
mas algumas saídas parecem estar escapando para o sistema.
fonte
INFO
(ou removendo completamente).INFO
as linhas de log niveladas. Eles se originam dos ganchos de desligamento, como você vê, e terminam onde quer que o log esteja configurado. Suponho que, em teoria, as mensagens possam terminar em um local diferente do pretendido, devido à alteração da configuração do log e aos ganchos sendo executados de forma assíncrona posteriormente. Portanto, essas linhas serão padronizadas para o console, pois a configuração anterior foi descarregada. Talvez.Respostas:
@eskatos está certo. O gerenciador de logs é desmontado após a execução do caso de teste antes do encerramento do processo do trabalhador. Todos os ganchos de encerramento são executados quando o processo do operador é encerrado e são redirecionados de volta ao console.
Como essas mensagens são geradas pela inicialização por mola, o melhor lugar seria filtrar as mensagens de desligamento usando o xml de configuração do teste de logback.
Algo como logback-test.xml dentro de src / test / resources
build.gradle
fonte
É possível desativar a saída com ou decidir o que registrar uma tarefa, a fim de controlar o stdout / stderr da JVM de teste:
TestLoggingContainer
testLogging.showStandardStreams = false
onOutput
Test
Esses fluxos são
TestLogEvent
STANDARD_OUT
&STANDARD_ERROR
, que são provenientes da JVM. Quando se pode determinar umaevent.message
contençãoextShutdownHook
, pode-se pular o registro.fonte
INFO
é o nível de log padrão do Spring; pode-se definir outros níveis de log, por exemplo.logging.level.org.springframework=TRACE
como variável ambiental.Eu poderia ocultar o teste de registro de dados específico da primavera (com base neste iniciador de primavera ) adicionando o seguinte
application.properties
a src / test / resources:logging.level.org.springframework
não terá efeito, por exemplocom.zaxxer.hikari
, no logger, mas você tem opções flexíveis aqui.(
root=ERROR
é como a "abordagem da marreta").(
src/main/resources
também é possível, mas tem efeito não apenas no teste, mas também no tempo de execução do aplicativo) (application.properties
é apenas um dos muitos "locais" possíveis para essa propriedade ... consulte também: https://docs.spring.io/spring-boot/ docs / current / reference / html / appendix-application-properties.html )Com isso, recebo uma saída gradle "silenciosa", também em
clean build
:fonte
Gradle tem um modo silencioso.
./gradlew build -q
Mas você ainda precisa de informações sobre os testes. você pode usar jacoco e sonarqube. Funcionou para mim aqui e aqui .
fonte