【问题标题】:Spring Boot SLF4j LogbackSpring Boot SLF4j Logback
【发布时间】:2023-04-04 14:03:01
【问题描述】:

我有一个小型 SpringBoot MvC 应用程序。与这些依赖关系:

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>${spring-boot-starter-test.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>

我将logback-test.xml 文件放在/src/test/resources/ 中,当我运行测试时它工作正常

<configuration debug="true" scan="true" scanPeriod="150 seconds">
    <property name="LOG_DIR" value="logs-test" />
    <appender name="FILE_INFO"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_DIR}/app_info.log</file>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} -
                %msg%n
            </Pattern>
....
</configuration>

但是当我添加到文件/src/test/resources/application.properties:

  # logging level
logging.level.root=error
    logging.level.org.springframework=ERROR
    logging.level.com.plats.bruts=ERROR

但是好像不行,因为我在运行测试的时候在控制台看到了DEBUG级别:

10:16:08.039 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class eu.europa.ec.oib.kw.frontoffice.repository.autorisation.AutorisationPersonneRepositoryTest]
10:16:08.047 [main] DEBUG org.springframework.test.context.BootstrapUtils 

【问题讨论】:

  • 根记录器设置为什么级别?
  • 在application.properties中没有设置
  • 应该在 logback 文件中设置。 &lt;root level="level"&gt;... appenders ...&lt;/root&gt;
  • 但如果可能的话,我只想使用 application.properties 而不是 .xml 文件
  • 为什么不使用 logback 进行日志配置,我很确定您不能将 application.properties 日志配置和 logback 混合使用。

标签: spring junit logback spring-test spring-logback


【解决方案1】:

确保在测试 Spring Boot 应用程序时使用 @SpringBootTest 注释以使 Spring Boot 加载默认的 logback 日志记录。

在大多数情况下,您可以 configure 无需自定义 logback xml 文件,并且可以使用 application.properties 进行管理。

对于非 Spring Boot 测试用例,您必须提供自己的 logback xml 文件。

对于自定义配置,您应该基于 spring boot 库中提供的默认 base.xml 构建文件(已定义文件和控制台附加程序),以便您可以导入默认值并根据需要添加特定配置。

这样,您仍然可以从应用程序属性中管理 default configuration attributes 以进行 Spring Boot 测试。还将文件重命名为以 spring 扩展名结尾,以便 spring boot 可以控制日志记录初始化。

类似

<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    !-- custom configuration goes here --!
</configuration>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-07
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 2020-07-18
    • 2016-04-25
    • 2015-02-14
    相关资源
    最近更新 更多