<?xml version="1.0" encoding="UTF-8"?>
 <!-- 日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
 <!-- 说明:
      1、日志级别及文件
           日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中
           例如:error级别记录到xxx_error.log(当前日志文件)或xxx_error-xxx.log(归档日志文件)
           日志文件按日期记录,同一天内,若日志文件大小等于或大于1M,则按0、1、2....顺序分别命名
           例如xxx-level-2019-05-08.0.log
           其它级别的日志也是如此。
      2、文件路径
           绝对路径:/springboottest/logs
      3、Appender
           Console将日志信息输出到控制上,为方便开发测试使用
           FileInfo对应info级别,文件名以xxx_info.log形式命名
           FileWarn对应warn级别,文件名以xxx_warn.log形式命名
           FileError对应error级别,文件名以xxx_error.log形式命名
 -->
 <configuration>
     <!-- 全局参数 -->
     <property name="CHARSET_UTF8" value="UTF-8"/>
     <property name="LOG_PATH" value="/springboottest/logs"/>
     <property name="LOG_NAME" value="springboottest"/>
     <property name="FILE_NAME" value="${LOG_PATH}/${LOG_NAME}"/>
     <property name="FILE_NAME_INFO" value="${LOG_PATH}/%d{yyyy-MM-dd}/${LOG_NAME}_info"/>
     <property name="FILE_NAME_WARN" value="${LOG_PATH}/warn/${LOG_NAME}_warn"/>
     <property name="FILE_NAME_ERROR" value="${LOG_PATH}/error/${LOG_NAME}_error"/>
     <property name="LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss.SSS} [%level] --- [%thread] %logger.%method:%L | %msg%n"/>
     <!-- 彩色日志格式 -->
     <property name="COLORS_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger){cyan}[%L] %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>    <!-- 彩色日志依赖的渲染类 -->
     <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
     <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
     <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>    <!-- 输出到控制台 -->
     <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
         <!-- 此日志appender是为开发使用,只配置最低级别,控制台输出的日志级别是大于或等于此级别的日志信息 -->
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>info</level>
         </filter>
         <encoder>
             <pattern>${COLORS_LOG_PATTERN}</pattern>
             <!-- 设置字符集 -->
             <charset>${CHARSET_UTF8}</charset>
         </encoder>
     </appender>    <!-- 时间滚动输出INFO级别的日志 -->
     <appender name="FileInfo" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <!-- 正在记录的日志文件的路径及文件名 -->
         <file>${FILE_NAME}_info.log</file>
         <!-- 追加方式记录日志 -->
         <append>true</append>
         <!-- 日志文件输出格式 -->
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
             <pattern>${LOG_PATTERN}</pattern>
             <charset>${CHARSET_UTF8}</charset>
         </encoder>
         <!-- 此日志文件只记录info级别的 -->
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>info</level>
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
         <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 每天日志归档路径以及格式 -->
             <fileNamePattern>${FILE_NAME_INFO}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                 <maxFileSize>1MB</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>
             <!-- 日志文件保留天数 -->
             <maxHistory>15</maxHistory>
         </rollingPolicy>
     </appender>    <!-- 时间滚动输出WARN级别的日志 -->
     <appender name="FileWarn" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <!-- 正在记录的日志文件的路径及文件名 -->
         <file>${FILE_NAME}_warn.log</file>
         <!-- 追加方式记录日志 -->
         <append>true</append>
         <!-- 日志文件输出格式 -->
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
             <pattern>${LOG_PATTERN}</pattern>
             <charset>${CHARSET_UTF8}</charset>
         </encoder>
         <!-- 此日志文件只记录warn级别的 -->
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>warn</level>
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
         <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 每天日志归档路径以及格式 -->
             <fileNamePattern>${FILE_NAME_WARN}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                 <maxFileSize>1MB</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>
             <!-- 日志文件保留天数 -->
             <maxHistory>15</maxHistory>
         </rollingPolicy>
     </appender>    <!-- 时间滚动输出ERROR级别的日志 -->
     <appender name="FileError" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <!-- 正在记录的日志文件的路径及文件名 -->
         <file>${FILE_NAME}_error.log</file>
         <!-- 追加方式记录日志 -->
         <append>true</append>
         <!-- 日志文件输出格式 -->
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
             <pattern>${LOG_PATTERN}</pattern>
             <charset>${CHARSET_UTF8}</charset>
         </encoder>
         <!-- 此日志文件只记录error级别的 -->
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>error</level>
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
         <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 每天日志归档路径以及格式 -->
             <fileNamePattern>${FILE_NAME_ERROR}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                 <maxFileSize>1MB</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>            <!-- 日志文件保留天数 -->
             <maxHistory>15</maxHistory>
         </rollingPolicy>
     </appender>    <!-- 过滤掉Spring的一些无用的Debug信息 -->
    <logger name="org.springframework" level="info" additivity="false">
         <appender-ref ref="Console"/>
     </logger>
     <root level="info">
         <appender-ref ref="Console"/>
         <appender-ref ref="FileInfo"/>
         <appender-ref ref="FileWarn"/>
         <appender-ref ref="FileError"/>
     </root>
 </configuration>