Spring Boot日志配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot日志配置相关的知识,希望对你有一定的参考价值。
Spring Boot默认是使用logback
之前在Spring中使用logback的时候是需要加入slf4j和logback的依赖的
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.7</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.7</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-access</artifactId> <version>1.1.7</version> </dependency>
在Spring Boot中默认已经引入了相关的jar包,所以就不需要额外手动引入了~
logback是一款优秀的日志框架,本文就介绍logback
spring boot默认会加载classpath:logback-spring.xml或者classpath:logback-spring.groovy
当然,日志文件的名称也可以采用自定义的方式,此时需要在properties文件中加入以下配置::
logging.config=classpath:logback-winner.xml
注意:不要使用logback这个来命名,否则spring boot将不能完全实例化
项目结构:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 文件输出格式 --> <property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/> <!-- test文件路径 --> <property name="TEST_FILE_PATH" value="/opt/winner/logs"/> <!-- pro文件路径 --> <property name="PRO_FILE_PATH" value="/opt/winner_0715/logs"/> <!-- 开发环境 --> <springProfile name="dev"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${PATTERN}</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="STDOUT"/> </root> </springProfile> <!-- 测试环境 --> <springProfile name="test"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${PATTERN}</pattern> </encoder> </appender> <!-- ch.qos.logback.core.rolling.RollingFileAppender 文件日志输出 --> <appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--不能有这项配置!!!!!--> <!--<Encoding>UTF-8</Encoding>--> <File>${TEST_FILE_PATH}/guide.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${TEST_FILE_PATH}/guide.%d{yyyy-MM-dd}-%i.log</FileNamePattern> <MaxHistory>30</MaxHistory> <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <MaxFileSize>10KB</MaxFileSize> </TimeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>${PATTERN}</pattern> </layout> </appender> <root level="info"> <appender-ref ref="STDOUT"/> <appender-ref ref="TEST-FILE"/> </root> </springProfile> <!-- 生产环境 --> <springProfile name="prd"> <!-- ch.qos.logback.core.rolling.RollingFileAppender 文件日志输出 --> <appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--<Encoding>UTF-8</Encoding>--> <File>${PRO_FILE_PATH}/guide.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${PRO_FILE_PATH}/guide.%d{yyyy-MM-dd}-%i.log</FileNamePattern> <MaxHistory>30</MaxHistory> <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <MaxFileSize>50MB</MaxFileSize> </TimeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>${PATTERN}</pattern> </layout> </appender> <root level="INFO"> <appender-ref ref="PROD_FILE"/> </root> </springProfile> </configuration>
注意,这里的springProfile 的名字与properties文件各个环境的名字要保持一致~
下面简单说一下File和FileNamePattern两个标签的含义:
<File>${TEST_FILE_PATH}/guide.log</File> <FileNamePattern>${TEST_FILE_PATH}/guide.%d{yyyy-MM-dd}-%i.log</FileNamePattern>
这两项的配置的意思是:
日志首先写入到文件中,当这个文件的大小超过设置的MaxFileSize时,就会把这个文件分割,分割后的文件命名按照来命名,为了方便,我上面将MaxFileSize设置为10KB,实际效果如下:
PS:被其中的一项配置折磨到死:
<Encoding>UTF-8</Encoding>
没错,就是它,在Spring中配置这一项是没错的,但是在Spring Boot中配置这一项不行,原因暂时未知
以上是关于Spring Boot日志配置的主要内容,如果未能解决你的问题,请参考以下文章