Spring Boot:如何使用application.properties设置日志logging级别?
这是非常简单的问题,但我找不到信息。
(也许我对Java框架的知识严重缺乏)
我如何设置与application.properties日志logging级别?
和日志文件的位置等?
更新:从Spring Boot v1.2.0.RELEASE开始, application.properties
或application.yml
的设置也适用。 请参阅参考指南的日志级别部分 。
logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR
对于早期版本的Spring Boot,你不能。 你只需要为你的日志框架(log4j,logback)使用正常的configuration。 将相应的configuration文件( log4j.xml
或logback.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 = DEBUG
和logging.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项目以反映更改。