Spring Boot:如何使用application.properties设置日志记录级别?

时间:2013-12-10 02:43:46

标签: logging spring-boot

这是一个非常简单的问题,但我找不到相关信息 (也许我对Java框架的了解非常缺乏)

如何使用application.properties设置日志记录级别?
并记录文件位置等?

16 个答案:

答案 0 :(得分:271)

更新:从Spring Boot v1.2.0.RELEASE开始,application.propertiesapplication.yml中的设置确实适用。请参阅参考指南的Log Levels section

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

对于早期版本的Spring Boot,你不能。您只需为日志框架(log4j,logback)使用正常配置即可。将适当的配置文件(log4j.xmllogback.xml)添加到src/main/resources目录并根据自己的喜好进行配置。

通过从命令行启动应用程序时指定--debug,可以启用调试日志记录。

Spring Boot为logback提供了一个很好的起点,可以配置一些默认值,着色等base.xml文件,您可以将其简单地包含在logback.xml文件中。 (这也是Spring Boot中默认的logback.xml推荐的。

<include resource="org/springframework/boot/logging/logback/base.xml"/>     

答案 1 :(得分:92)

您可以使用application.properties执行此操作。

logging.level.=ERROR - &gt;将根日志记录级别设置为错误
...
logging.level.=DEBUG - &gt;将根日志记录级别设置为DEBUG

logging.file=${java.io.tmpdir}/myapp.log - &gt;将绝对日志文件路径设置为TMPDIR / myapp.log

关于使用配置文件进行日志记录的一组合理的默认application.properties将是: application.properties:

spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${java.io.tmpdir}/${spring.application.name}.log

application-dev.properties:

logging.level.=DEBUG
logging.file=

当您在自己喜欢的IDE内部开发时,只需将-Dspring.profiles.active=dev作为VM参数添加到应用程序的运行/调试配置中。

这将使您在开发期间仅记录生产和调试日志记录时出错,而无需将输出写入日志文件。这将改善开发期间的性能(并节省SSD驱动器的运行时间;)。)。

答案 2 :(得分:44)

设置 root 日志记录级别的正确方法是使用属性logging.level.root。请参阅documentation,该问题自最初询问此问题以来已更新。

示例:

logging.level.root=WARN

答案 3 :(得分:13)

假设您的应用程序的包名为com.company.myproject。然后,您可以在application.properties文件

中为项目内的类设置日志记录级别
  

logging.level.com.company.myproject = DEBUG

logging.level.org.springframework.web = DEBUGlogging.level.org.hibernate = DEBUG将仅为Spring框架Web和Hibernate的类设置日志记录级别。

要设置日志文件位置,请使用

  

logging.file = /home/ubuntu/myproject.log

答案 4 :(得分:10)

确保Dave Syer提示得到一些爱,因为将debug=true添加到a​​pplication.properties确实会启用调试日志记录。

答案 5 :(得分:9)

如果您使用的是Spring Boot,那么您可以直接在application.properties 文件中添加以下属性来设置日志记录级别, 自定义日志记录模式并将日志存储在外部文件中。

这些是不同的日志记录级别及其从最小值&lt;&lt;最大。

OFF&lt;&lt;致命&lt;&lt;错误&lt;&lt; WARN&lt;&lt; INFO&lt;&lt; DEBUG&lt;&lt; TRACE&lt;&lt; ALL

# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace

# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, its won't work.      
logging.file=D:/spring_app_log_file.log

# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

请通过此链接更加生动地自定义您的日志。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html

答案 6 :(得分:8)

如果您想使用不同的日志框架,例如log4j,我发现最简单的方法是禁用spring boots自己的日志记录并实现自己的日志记录。这样我就可以在一个文件中配置每个loglevel,log4j.xml(在我的例子中)就是这样。

要实现这一点,您只需将这些行添加到您的pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

您可能已经拥有了第一个依赖项,只需要另外两个。请注意,此示例仅涵盖log4j 就是这样,现在你已经准备好在log4j配置文件中配置启动日志了!

答案 7 :(得分:3)

对于记录:official documentation,对于Spring Boot v1.2.0.RELEASE和Spring v4.1.3.RELEASE:

  

如果您需要对日志记录进行的唯一更改是设置各种记录器的级别,那么您可以使用&#34; logging.level&#34;在application.properties中执行此操作。前缀,例如

     
    

logging.level.org.springframework.web: DEBUG        logging.level.org.hibernate: ERROR

  
     

您还可以使用&#34; logging.file&#34;来设置要登录的文件的位置(除控制台外)。

     

要配置日志记录系统的更细粒度设置,您需要使用相关LoggingSystem支持的本机配置格式。默认情况下,Spring Boot从系统的默认位置(例如,类路径:Logback的logback.xml)中选择本机配置,但您可以使用&#34; logging.config&#34;设置配置文件的位置。属性。

答案 8 :(得分:3)

使用Springboot 2,您可以使用以下环境变量来设置根日志记录级别:

logging.level.root=DEBUG

或者您可以为此类软件包设置特定的日志记录:

logging.level.my.package.name=TRACE

答案 9 :(得分:1)

如果是eclipse IDE并且您的项目是maven,请记住清理并构建项目以反映更改。

答案 10 :(得分:0)

在春季启动项目中,我们可以编写logging.level.root = WARN,但是这里的问题是,即使我们添加了devtools依赖项,我们也必须重新启动,如果在属性文件中修改了任何值,将无法自动检测到,为此我开始了解解决方案,即我们可以在pom.xml中添加执行器并通过记录员级别,如下所示,在邮递员客户端中 在网址列http://localhost:8080/loggers/ROOThttp://localhost:8080/loggers/中 在正文中,您可以传递如下的json格式

{
  "configuredLevel":null
   effectiveLevel":"WARN"

}

答案 11 :(得分:0)

现有答案很棒。我只想与您分享一个新的spring boot功能,该功能允许对日志进行分组并在整个组上设置日志记录级别。

文档中的示例:

  • 创建日志记录组
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
  • 设置组的日志记录级别
logging.level.tomcat=TRACE

这是一个很棒的功能,它带来了更多的灵活性。

答案 12 :(得分:0)

在当前配置中,我在 application.yaml 中定义了它,如下所示:

logging:
  level:
    ROOT: TRACE

我正在使用spring-boot:2.2.0.RELEASE。

答案 13 :(得分:0)

您可以尝试将日志级别设置为DEBUG,它将在启动应用程序时显示所有内容

logging.level.root=DEBUG

答案 14 :(得分:0)

我们也可以通过命令行打开调试日志,如下所示:-

java -jar <jar file> --debug

答案 15 :(得分:0)

logging:
  level:
    root: INFO
    com.mycompany.myapp: DEBUG