无法从application.properties更改Spring Boot日志记录级别,但可以从logback.xml更改

我们有一个多模块的Spring Boot项目,它有 DEBUG 级别的日志记录需要更改为 INFO 级别 . 由于它使用Spring Boot 1.2.5,我按照说明herehere,但在 application.properties 中设置 logging.level.org.springframework.web=INFO 无效,我们在日志中不断收到 DEBUG 消息 .

但是,提供像上面提到的网站上的那个,并设置水平有效 . 即使没有明确设置,因为Spring引入的 base.xml 包含在我们的 logback.xml 中,默认情况下根日志记录级别设置为 INFO .

Spring Boot使用带有Logback的SLF4J作为默认值,但我们不希望因此而依赖Logback,我们应该能够从 application.properties 配置日志记录级别 . 该项目以编程方式配置,因此 application.properties 不包含任何其他内容 . 两个配置文件都位于 src/main/resources 下的类路径中 .

我尝试了 logging.level.*=INFO ,尝试了不同的分隔符( : , `` , = ) . 我搜索了项目文件,但没有发现现有日志配置的痕迹 .

什么可能导致 application.properties 被忽略/覆盖但 logback.xml 不是?

application.properties

logging.level.org.springframework.web=INFO

logback.xml

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

回答(2)

3 years ago

尝试设置要与 spring.config.locationspring.config.name 一起使用的application.properties文件的名称(有关详细信息,请参阅docs

除此之外,您可以使用Actuator/env endpoints 查看Spring Boot处理哪些文件以及从中读取哪些值 . 这将告诉您是否有比您提供的配置文件更多的配置文件 .

也许快速检查可能会有所帮助:检查application.properties中的某些内容,例如 server.port=4711 ,然后您将立即知道是否读取了该文件 .

请记住,在读取application.properties之前会写入一些日志记录输出 . 这意味着在Spring Boot得知您不想看到它们之前,可能已经编写了一些org.springframework.web消息 .

3 years ago

如果你把 logback.xml Spring Boot用 Logback 作为主 LoggingSystem . 除了commons-logging API之外,Spring Boot没有强制的日志记录依赖性 .