Spring Boot 记录器不记录任何内容

Aet*_*rus 3 logging spring-boot

我使用 Spring Boot (1.5.8.RELEASE) 创建了一个 Spring MVC 项目。我选择了 web、jpa 和 mysql,并且在我的build.gradle.

这是我的相关部分application.yml

logging:
  level: trace
Run Code Online (Sandbox Code Playgroud)

这就是有关日志记录的所有配置。我只想在控制台中显示日志消息,所以我省略了logging.path.

我有控制器

package com.example.controllers;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// other imports ...

@RestController
@RequestMapping("/")
public class DummyController {

  private static final Logger LOGGER = 
    LoggerFactory.getLogger(DummyController.class);

  @GetMapping
  public void foo() {
    LOGGER.info("foo");
  }
}
Run Code Online (Sandbox Code Playgroud)

当我向 发送请求时/,我收到200 OK响应,但日志中没有显示任何内容。奇怪的是,Spring框架和Hibernate的日志消息确实出现在控制台中。只是我的临时日志消息丢失了。

然后我调试了我的代码,发现LOGGER(记录器树的根)的祖先是一个具有 log level 的记录器INFO。这显然不是我配置的记录器。然而Spring的官方文档并没有告诉我如何获取我想要的logger实例。我怎样才能做到这一点?我的代码是否有问题,或者我在配置中遗漏了某些内容?

var*_*ren 5

官方文档很简单,可以使用配置根记录器logging.level.root。但实际上您可以单独为每个包/类配置日志记录

logging.level.root=TRACE                     # default for everything
logging.level.com.example.controllers=TRACE  # for your controllers package
Run Code Online (Sandbox Code Playgroud)

类似的application.yml:

logging:
 level:
   root: TRACE 
   com.example.controllers: TRACE 
Run Code Online (Sandbox Code Playgroud)