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="%dyyyy-MM-dd HH:mm:ss.SSS [%thread] %-5level %logger36 - %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.%dyyyy-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.%dyyyy-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.%dyyyy-MM-dd-%i.log</FileNamePattern>

这两项的配置的意思是:

日志首先写入到文件中,当这个文件的大小超过设置的MaxFileSize时,就会把这个文件分割,分割后的文件命名按照来命名,为了方便,我上面将MaxFileSize设置为10KB,实际效果如下:

PS:被其中的一项配置折磨到死:

<Encoding>UTF-8</Encoding>

没错,就是它,在Spring中配置这一项是没错的,但是在Spring Boot中配置这一项不行,原因暂时未知

参考技术A

这里有一篇文章关于

Spring Boot的日志配置和处理

写的非常详细,推荐看一下!

Spring boot启动后没有生成日志文件问题排错

我的配置是:

 

logging.file.name=spring-boot.log
logging.file.path=D:/log/

系统启动后日志文件没有生成

原因:一开始以为这两个属性是配合着使用的,所以两个都配置了,结果找不到生成的日志文件

经过多方查证,后来发现,这两个属性只需要配一个就行了

如果配置了:

logging.file.name=D:/log/spring-boot.log #在D:/log/目录下生成一个日志文件spring-boot.log

 则不需要配置:

logging.file.path=D:/log/  #配置日志路径,默认在此目录下生成一个名为:spring.log的日志文件

 

备注:

旧版本的spring boot的配置文件中的相关属性为:

logging.file=

logging.path=

这两种属性都过时了,推荐使用新的属性,分别对应logging.file.name和logging.file.path

 

以上是关于spring boot怎么配日志的主要内容,如果未能解决你的问题,请参考以下文章

spring boot 日志的使用

Spring Boot 日志配置详解,还有谁不会?!

Spring Boot日志配置及输出

Spring Boot教程第22篇:整合elk,搭建实时日志平台

Spring Boot配置保存日志文件

spring boot 加载日志框架后经常出现 LOG_PATH_IS_UNDEFINED 目录怎么办?