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

这是非常简单的问题,但我找不到信息。
(也许我对Java框架的知识严重缺乏)

我如何设置与application.properties日志logging级别?
和日志文件的位置等?

更新:从Spring Boot v1.2.0.RELEASE开始, application.propertiesapplication.yml的设置也适用。 请参阅参考指南的日志级别部分 。

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

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

您可以通过从命令行启动应用程序时指定--debug来启用debugging日志logging。

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

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

你可以使用你的application.properties来做到这一点。

logging.level.=ERROR – >将根日志级别设置为错误

logging.level.=DEBUG – >将根日志级别设置为DEBUG

logging.file=${java.io.tmpdir}/myapp.log – >将绝对日志文件path设置为TMPDIR / myapp.log

关于使用configuration文件进行日志logging的理想默认的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作为虚拟机参数给你的应用程序的运行/debuggingconfiguration。

这将使您在开发过程中仅logging生产和debugging日志logging中的错误,而不将输出写入日志文件。 这将改善开发过程中的性能(并且节省SSD驱动器几个小时的运行时间))。

确保Dave Syer提示得到一些爱,因为向application.properties添加debug=true将确实启用debugging日志logging。

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

为了达到这个目的,你只需要把这些行添加到你的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。
就是这样,现在你已经开始在log4jconfiguration文件中设置启动日志了!

假设您的应用程序包名称为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

设置日志logging级别的正确方法是使用属性logging.level.root 。 请参阅文档 ,这个问题最初是被问到的。

例:

 logging.level.root=WARN 

对于logging: 官方文档 ,至于Spring Boot v1.2.0.RELEASE和Spring v4.1.3.RELEASE:

如果您需要对日志logging进行的唯一更改是设置各种日志logging器的级别,则可以使用“logging.level”前缀在application.properties中执行此操作,例如

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

您还可以使用“logging.file”来设置要login的文件的位置(除了控制台之外)。

要configuration日志logging系统的更精细的设置,您需要使用LoggingSystem支持的本机configuration格式。 默认情况下,Spring Boot从系统的默认位置(例如,类path:logback.xml)获取本机configuration,但是可以使用“logging.config”属性设置configuration文件的位置。

如果你想设置更多的细节,请添加一个日志configuration文件名“logback.xml”或者“logback-spring.xml”。

在你的application.properties文件中,像这样input:

 logging.config: classpath:logback-spring.xml 

在loback-spring.xml中,input如下所示:

  <?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <file>sys.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/system.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>500MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n </pattern> </encoder> </appender> <appender name="BUSINESS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>TRACE</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <file>business.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/business.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>500MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n </pattern> </encoder> </appender> <logger name="{project-package-name}" level="TRACE"> <appender-ref ref="BUSINESS_APPENDER" /> </logger> <root level="INFO"> <appender-ref ref="ROOT_APPENDER" /> </root> </configuration> 

在eclipse IDE和你的项目是maven的情况下,请记住清理并构build项目以反映更改。