当前位置: 首页 > 知识库问答 >
问题:

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

程振濂
2023-03-14

我正在Spring Boot应用程序中使用Log4J2,并尝试通过application.properties配置几个基本的日志记录选项。

我在我的controller类中设置了一个记录器,就像这样。

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";
   }
}
logging.level.guru.springframework.controllers=DEBUG
logging.level.org.springframework.web=INFO
logging.file=logs/spring-boot-logging.log

当我启动应用程序时,Spring内部日志消息将以INFO level记录在控制台中。这应来自Logging.Level.org.SpringFramework.Web属性。但是,当调用控制器时,只记录info()和lower的消息。当logging.level.guru.SpringFramework.Controllers属性设置为DEBUG时,为什么DEBUG()方法的消息没有被记录下来。如果我将以下内容添加到application.properties。

logging.level.root=ERROR

现在,在Spring启动时没有消息发送到console(显然这次已经拾取了错误级别)。类似地,控制器只发出error()方法消息。那么,从application.properties中提取级别是否有特定的优先级。

是否有一种方法可以为不同的包(比如控制器包)设置不同的级别,而不是为application.properties中的logging.level.root和logging.level.org.springframework.web指定的级别。

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

共有1个答案

嵇永望
2023-03-14

您使用的是包含bug的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>
 类似资料:
  • 根记录器配置为级别的同步记录器。我还有几个异步记录器。其中一个异步记录器配置在自定义的较高日志级别(789)。这高于级别(600)。 这样做的原因是有一个日志级别,可以用于通过异步记录器及其自己的附加程序记录的特殊事件。 我们不希望将事件发送给同步根记录器或其他记录器。。但仅限于异步记录器及其相应的附加程序。。可能吗?

  • 我的MBean部署在JBoss上。jboss日志记录级别设置为'info'。现在,当我将我的包的日志级别(java util logger)更改为“fine”(通过设置日志级别以编程方式运行时)时,它不会追加任何logger.fine(“....”)的消息。信息被过滤掉了。 是否有任何方法可以将java util记录器日志级别的更改传播到jboss日志级别?(java util有不同的级别->SE

  • 主要内容:如何设置日志级别?,日志级别如何工作?,Log4j 日志级别示例日志级别用于对日志文件中的信息进行分类。但是它们以非常具体的方式进行分类,即按紧急程度分类。该级别允许您管理以下类型的信息: 您可以在搜索过程中过滤您的日志文件。 您可以管理您记录的信息量。 系统中给出的信息量和类型以及事件日志由配置文件中的 log4j 日志级别设置控制。每条日志消息都以消息级别为前缀。 日志级别是org.apache.log4j.Level类的一个实例。 Log4j 具有以下级

  • 我正在使用Spring Boot和liquibase进行数据库迁移和重构。 您是否知道通过Spring Boot的application.properties或任何其他无痛苦的方法配置LiquiBase的logLevel来调试? 我尝试了logging.level.*设置的各种组合,但都不起作用。

  • 如何编写一个简单的log4j2.xml文件,将不同级别的日志放入不同的文件中? 例如,我们有错误日志,任何信息日志,我需要将所有错误日志消息推入一个日志文件,所有信息日志消息推入另一个文件。 我怎么做?

  • 我在我的项目中进行了强制日志记录,并且我很难抑制我不想要的日志记录语句。 还有,我在使用log4j时看不到这些记录器。我正在尝试学习Logback,因为我已经被指派来评估它作为团队可能的升级。