如何在 spring 启动测试(集成测试)期间查看自动配置日志输出
How to view autoconfigure log output during spring boot tests (integration tests)
我正在尝试在测试期间调试 spring 启动应用程序,尤其是查看日志输出。
我不确定如何在测试期间获得与 运行 应用程序时相同的 自动配置日志输出 。
我试过了(来自src/main/resources/application-test.properties
):
logging.level.org.springframework.boot.autoconfigure.test=DEBUG
和
logging.level.org.springframework.boot.autoconfigure=DEBUG
顺便说一句,我使用具有以下配置的 log4j(来自 src/main/resources/log4j.properties
):
log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
edit: 我已经迁移到 logback。这是我的 src/main/resources/logback-test.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<logger name="org.springframework.boot.autoconfigure" level="debug"/>
<root level="warn">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
我在测试期间仍然没有获得任何自动配置信息...
我认为将显式 log4j 配置 (log4j.properties) 与 Spring Boot one 结合起来不是个好主意。我会使用其中之一。
为 org.springframework.boot.autoconfigure.logging
包配置 DEBUG 级别时打印自动配置信息。
在这种情况下 log4j.properties 似乎适用。尝试改变:
log4j.rootLogger=DEBUG, stdout
或者,如果您决定使用应用程序属性:
logging.level.org.springframework.boot.autoconfigure.logging=DEBUG
顺便说一句,log4j 是一项古老的技术。您应该迁移到 LogBack 或 log4j2。
相互竞争的日志记录框架也可能会阻止显示自动配置调试。
您可能需要排除其中之一才能看到 Spring 引导调试。
就我而言,我已将 io.rest-assured:rest-assured
库包含在我的 Spring 启动应用程序中。
RestAssured 使用 commons-logging
库。我需要排除它才能看到 Spring Boot DEBUG。在我的 build.gradle:
configurations {
all {
exclude group: 'commons-logging', module: 'commons-logging'
}
}
我正在尝试在测试期间调试 spring 启动应用程序,尤其是查看日志输出。
我不确定如何在测试期间获得与 运行 应用程序时相同的 自动配置日志输出 。
我试过了(来自src/main/resources/application-test.properties
):
logging.level.org.springframework.boot.autoconfigure.test=DEBUG
和
logging.level.org.springframework.boot.autoconfigure=DEBUG
顺便说一句,我使用具有以下配置的 log4j(来自 src/main/resources/log4j.properties
):
log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
edit: 我已经迁移到 logback。这是我的 src/main/resources/logback-test.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<logger name="org.springframework.boot.autoconfigure" level="debug"/>
<root level="warn">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
我在测试期间仍然没有获得任何自动配置信息...
我认为将显式 log4j 配置 (log4j.properties) 与 Spring Boot one 结合起来不是个好主意。我会使用其中之一。
为 org.springframework.boot.autoconfigure.logging
包配置 DEBUG 级别时打印自动配置信息。
在这种情况下 log4j.properties 似乎适用。尝试改变:
log4j.rootLogger=DEBUG, stdout
或者,如果您决定使用应用程序属性:
logging.level.org.springframework.boot.autoconfigure.logging=DEBUG
顺便说一句,log4j 是一项古老的技术。您应该迁移到 LogBack 或 log4j2。
相互竞争的日志记录框架也可能会阻止显示自动配置调试。
您可能需要排除其中之一才能看到 Spring 引导调试。
就我而言,我已将 io.rest-assured:rest-assured
库包含在我的 Spring 启动应用程序中。
RestAssured 使用 commons-logging
库。我需要排除它才能看到 Spring Boot DEBUG。在我的 build.gradle:
configurations {
all {
exclude group: 'commons-logging', module: 'commons-logging'
}
}