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

标签 java spring spring-mvc spring-boot

我们有一个多模块 Spring Boot 项目,它具有 DEBUG 级别的日志记录,需要更改为 INFO 级别。因为它使用 Spring Boot 1.2.5,所以我遵循了说明 herehere ,但是在 application.properties 中设置 logging.level.org.springframework.web=INFO 没有效果,我们不断收到 DEBUG 消息日志。

但是,提供一个类似于上述站点上的 logback.xml 并在那里设置级别。即使没有明确设置它,因为 Spring Boot 附带的 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>

最佳答案

尝试将 application.properties 文件的名称设置为与 spring.config.locationspring.config.name 一起使用(详见 docs )

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

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

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

关于java - 无法从 application.properties 更改 Spring Boot 日志记录级别,但可以从 logback.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33174832/

相关文章:

mysql - 如何在 Hibernate、MySQL 应用程序中使用 import.sql 文件将默认数据插入表中

java - 我们是否应该在 JavaFX 自定义控件中使用 FXML?

java - 将正则表达式匹配添加在一起

eclipse - 在哪里可以获得 Spring 工具套件的更新站点

java - Spring Servlet 映射困惑

java - Spring Project 如何显示语言

java - 卡在 "Creating Liferay plugin project..."

java - 通过 Intent 传递 list<String[]>

java - 使用 Spring Data 在执行期间更改了存储过程名称

java - Spring MVC : How to unit test Model's attribute from a controller method that returns String?