SpringBoot支持Java Util Logging,Log4J,Log4J2和Logback日志框架,默认采用logback日志。在实际SpringBoot项目中使用SpringBoot默认日志配置是不能够满足实际生产及开发需求的,需要选定适合的日志输出框架,灵活调整日志输出级别、日志输出格式等。本章主要讲述如何进行SpringBoot项目的日志详细配置。

(强烈建议使用Logback日志配置,因为它比log4j性能好多很多。)

1、添加日志依赖包
    SpringBoot项目中依赖包spring-boot-starter中已经包含spring-boot-starter-logging,该依赖包就是默认的logback日志框架,则不需额外引入。
2、添加logback.xml
在/springboot/src/main/resources目录下,新建日志配置文件logback.xml,如下:
(配置说明见注释)
<?xml versinotallow="1.0" encoding="UTF-8" ?>
 <!-- 
     scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true
     scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位默认单位是毫秒,当scan为true时此属性生效,默认时间间隔为1分钟
     debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态,默认值为false
  -->
 <configuration scan="true" scanPeriod="2 seconds">
     <!--
          定义滚动记录文件appender 作用:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 
         RollingFileAppender class="ch.qos.logback.core.rolling.RollingFileAppender"
             参数: 
             <append>:如果是true日志被追加到文件结尾,如果是false清空现存文件,默认是true
             <file>:被写入的文件名,可以是相对目录也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值
             <rollingPolicy>:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名
             <triggeringPolicy>:告知RollingFileAppender合适激活滚动
             <prudent>:当为true时不支持FixedWindowRollingPolicy支持TimeBasedRollingPolicy,但是有两个限制:1不支持也不允许文件压缩,2不能设置file属性必须留空
     -->
     <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <!-- 如果是true,日志被追加到文件结尾,如果是false,清空现存文件.默认是true -->
         <prudent>true</prudent>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 每天滚动一次的日志 只保留30天内的日志文件 -->
             <fileNamePattern>logs/%d{yyyy-MM-dd}/springboot_%i.log</fileNamePattern>
             <maxHistory>30</maxHistory>
             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                 <maxFileSize>10MB</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>
         </rollingPolicy>
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
             <!-- 对日志进行格式化 -->
             <pattern>%date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n</pattern>
             <charset>utf-8</charset>
         </encoder>
     </appender>
  
     <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <prudent>true</prudent>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <fileNamePattern>logs/%d{yyyy-MM-dd}/springboot-error_%i.log</fileNamePattern>
             <maxHistory>30</maxHistory>
             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                 <maxFileSize>10MB</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>
         </rollingPolicy>
         <encoder>
             <pattern>%date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n</pattern>
             <charset>utf-8</charset>
         </encoder>
         <!-- 
              配置日志级别过滤器 作用:根据日志级别进行过滤,如果日志级别等于配置级别过滤器会根据onMath和onMismatch接收或拒绝日志