<?xml version="1.0" encoding="UTF-8" ?>
< configuration>
< property name = " log.path" value = " ./logs/" />
< property name = " log.pattern" value = " %d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
< property name = " maxHistory" value = " 90" />
< appender name = " Stdout" class = " ch.qos.logback.core.ConsoleAppender" >
< layout class = " ch.qos.logback.classic.PatternLayout" >
< pattern> ${log.pattern}
</ pattern>
</ layout>
</ appender>
< appender name = " INFO" class = " ch.qos.logback.core.rolling.RollingFileAppender" >
< filter class = " ch.qos.logback.classic.filter.ThresholdFilter" >
< level> INFO</ level>
</ filter>
< rollingPolicy class = " ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" >
< fileNamePattern> ${log.path}/info/infoLog-%d{yyyy-MM-dd}.%i.log</ fileNamePattern>
< maxFileSize> 2MB</ maxFileSize>
< maxHistory> ${maxHistory}</ maxHistory>
< totalSizeCap> 1GB</ totalSizeCap>
</ rollingPolicy>
< encoder>
< pattern> ${log.pattern}</ pattern>
</ encoder>
</ appender>
< appender name = " ERROR" class = " ch.qos.logback.core.rolling.RollingFileAppender" >
< 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.SizeAndTimeBasedRollingPolicy" >
< fileNamePattern> ${log.path}/error/errorLog-%d{yyyy-MM-dd}.%i.log</ fileNamePattern>
< maxFileSize> 2MB</ maxFileSize>
< maxHistory> ${maxHistory}</ maxHistory>
< totalSizeCap> 1GB</ totalSizeCap>
</ rollingPolicy>
< encoder>
< pattern> ${log.pattern}</ pattern>
</ encoder>
</ appender>
< root level = " info" >
< appender-ref ref = " Stdout" />
< appender-ref ref = " INFO" />
< appender-ref ref = " ERROR" />
</ root>
</ configuration>