Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging Spring Boot application.properties中的日志级别问题_Logging_Spring Boot_Log4j2 - Fatal编程技术网

Logging Spring Boot application.properties中的日志级别问题

Logging Spring Boot application.properties中的日志级别问题,logging,spring-boot,log4j2,Logging,Spring Boot,Log4j2,我在Spring引导应用程序中使用Log4J 2,并试图通过application.properties配置一些基本的日志选项 我在控制器类中设置了一个记录器,如下所示 package guru.springframework.controllers; - - - - @Controller public class IndexController { private final Logger logger = LoggerFactory.getLogger(this.getClass())

我在Spring引导应用程序中使用Log4J 2,并试图通过application.properties配置一些基本的日志选项

我在控制器类中设置了一个记录器,如下所示

package guru.springframework.controllers;
- - - -
@Controller
public class IndexController {
  private final Logger logger = LoggerFactory.getLogger(this.getClass());
  @RequestMapping("/")
  String index(){
    logger.debug("This is a debug message");
    logger.info("This is an info message");
    logger.warn("This is a warn message");
    logger.error("This is an error message");
    return "index";
   }
}
在application.properties中,我有以下属性

logging.level.guru.springframework.controllers=DEBUG
logging.level.org.springframework.web=INFO
logging.file=logs/spring-boot-logging.log
logging.level.root=ERROR
当我启动应用程序时,Spring内部Logging消息将以信息级别记录在控制台中。这应该来自logging.level.org.springframework.web属性。但是,当调用控制器时,只记录info()和更低级别的消息。当logging.level.guru.springframework.controllers属性设置为DEBUG时,为什么不记录DEBUG()方法的消息。如果我将以下内容添加到application.properties

logging.level.guru.springframework.controllers=DEBUG
logging.level.org.springframework.web=INFO
logging.file=logs/spring-boot-logging.log
logging.level.root=ERROR
现在,Spring启动时并没有消息发送到控制台(显然这次已经检测到错误级别)。类似地,控制器仅发出error()方法消息。那么,从application.properties获取级别是否有任何特定的优先级

是否有一种方法可以独立于application.properties中为logging.level.rootlogging.level.org.springframework.web指定的级别,为不同的包(例如控制器包)设置不同的级别


我不想使用任何其他外部配置文件。

您使用的是旧版本的Spring Boot(1.2.4.RELEASE),其中包含。它是在1.2.6.RELEASE中修复的,但我建议升级到1.2.8.RELEASE(如果您需要坚持使用1.2.x),或者更好地升级到1.3.3.RELEASE(撰写本文时的最新版本)。您可以通过更新项目pom中使用的
spring boot starer parent
版本进行升级:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

org.springframework.boot
spring启动程序父级
1.3.3.1发布

我可以通过SLF4J使用Log4j2作为后端进行日志记录。你能分享一个简单的例子来说明这个问题吗?@Andy这是一个Spring Boot Web应用程序。这正是问题所在。谢谢