springframework org mkyong logger how debug logging spring-boot logback ignore

org - Spring Boot Test ignora logging.level



spring boot logging mkyong (6)

Bien, lo que hice ahora, en todos los módulos que configuré de la siguiente manera:

src / main / resources:
Utilizo la configuración de registro en application.properies como logging.level. * Como se describe en la pregunta.

src / prueba / recursos:
Yo uso logback-test.xml como:

<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <logger name="*.myapp" level="error" /> <logger name="org.springframework.core " level="error" /> <logger name="org.springframework.beans" level="error" /> <logger name="org.springframework.context" level="error" /> <logger name="org.springframework.transaction" level="error" /> <logger name="org.springframework.web" level="error" /> <logger name="org.springframework.test" level="error" /> <logger name="org.hibernate" level="error" /> </configuration>

Pero todavía no entiendo por qué en pocos módulos podría usar application.properties, pero en otro módulo ignora ... Pero por ahora funciona para mí tal como está.

Pero tal vez algunas sugerencias con conocimientos previos sean bienvenidas.

No marco mi respuesta como solución, porque todavía parece una solución.

Uno de mis módulos maven ignora mis niveles de registro cuando ejecuto pruebas.

En src / test / resources tengo application.properties:

app.name=bbsng-import-backend app.description=Import Backend Module for Application spring.profiles.active=test # LOGGING logging.level.root=error logging.level.org.springframework.core =fatal logging.level.org.springframework.beans=fatal logging.level.org.springframework.context=fatal logging.level.org.springframework.transaction=error logging.level.org.springframework.test=error logging.level.org.springframework.web=error logging.level.org.hibernate=ERROR

También probé application-test.properties.

Mi aplicación registra mucho, especialmente al cargar contexto. Intenté logback.xml, logback-test.xml y logback-spring.xml pero nada ayuda.

Mi pom:

<parent> <groupId>at.company.bbsng</groupId> <artifactId>bbsng-import</artifactId> <version>0.1.0-SNAPSHOT</version> </parent> <artifactId>bbsng-import-backend</artifactId> <name>bbsng-import-backend</name> <properties> <start-class>at.company.bbsng.dataimport.ApplicationImportBackend</start-class> </properties> <dependencies> <!-- APPLICATION ... --> <dependency> <groupId>at.company.bbsng</groupId> <artifactId>bbsng-app-domain</artifactId> <scope>test</scope> </dependency> <!-- SPRING ... --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-batch</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <scope>test</scope> </dependency> <!-- JAVAX ... --> ... <!-- COMMONS ... --> ... <!-- LOMBOK ... --> ... <!-- DB --> ... </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${org.springframework.boot-version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>

Una clase de prueba simple:

@ContextConfiguration(classes = { ApplicationImportBackend.class }) @RunWith(SpringJUnit4ClassRunner.class) @ActiveProfiles({ "test" }) public class BatchJobConfigurationTests { @Autowired private JobLauncher jobLauncher; @Test public void testSimpleProperties() throws Exception { assertNotNull(jobLauncher); } }

Los registros de aplicaciones están en modo DEPURACIÓN.

Y sí, se cargarán las application.properties. Ya intenté romper la aplicación por configuración incorrecta.

Gracias por cualquier pista.


Para habilitar application.properties necesita agregar una anotación @SpringBootTest para probar la clase, lea más here


Prueba esto:

@ContextConfiguration(classes = ApplicationImportBackend.class, initializers = ConfigFileApplicationContextInitializer.class) @RunWith(SpringJUnit4ClassRunner.class) @ActiveProfiles({ "test" }) public class BatchJobConfigurationTests { //... }


Si sus pruebas están anotadas con @DataJpaTest , puede desactivar el cierre de sesión de Hibernate SQL con:

@DataJpaTest(showSql=false) public class MyTest { .. }


También estoy buscando una solución para eso, mientras tanto estoy usando la siguiente solución:

este no es el mejor pero funciona

@BeforeClass public static void setErrorLogging() { LoggingSystem.get(ClassLoader.getSystemClassLoader()).setLogLevel(Logger.ROOT_LOGGER_NAME, LogLevel.ERROR); }

LoggingSystem : una abstracción común sobre los sistemas de registro.

->

get : Detecta y devuelve el sistema de registro en uso. Admite Logback y Java Logging

setLogLevel : establece el nivel de registro para un registrador dado.

Asegúrese de volver a cambiar el nivel de registro para todas las demás clases de prueba.

Espero que te ayude, buena suerte


<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <logger name="org.springframework" level="INFO"/> </configuration>

Como solución rápida, puse el archivo logback.xml con el contenido anterior en src / test / resources y funciona.