<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" scanPeriod="60 seconds" debug="false">
    
    <property name="LOG_HOME" value="E:/file/logs/" />
    
    <property name="appName" value="king-logs"></property>
    
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    
    <appender name="timeFileOutput" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <File>${LOG_HOME}/timeFile/out.log</File>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <FileNamePattern>${LOG_HOME}/timeFile/info.%d{yyyy-MM-dd}.%i.log.gz</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>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            
            <charset>UTF-8</charset>
        </encoder>
        
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            
            <onMatch>ACCEPT</onMatch>
            
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    
    <appender name="alllog"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${LOG_HOME}/all.log</file>
        
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            
            <fileNamePattern>${LOG_HOME}/%d{yyyy-MM, aux}/all.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            
            <maxFileSize>64MB</maxFileSize>
            
            <maxHistory>15</maxHistory>
        </rollingPolicy>
    </appender>
    
    <appender name="errorlog"  class="ch.qos.logback.core.rolling.RollingFileAppender">
    
    <file>${LOG_HOME}/error.log</file>
    
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            
            <fileNamePattern>${LOG_HOME}/%d{yyyy-MM, aux}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            
            <maxFileSize>64MB</maxFileSize>
            
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    
    <springProfile name="production">
        
        <logger name="production" level="warn" additivity="false">
            <appender-ref ref="alllog"/>
            <appender-ref ref="errorlog"/>
        </logger>
    </springProfile>
    
    <springProfile name="dev,gg">
        <logger name="dev" level="warn" additivity="false">
            <appender-ref ref="console"/>
        </logger>
    </springProfile>
    
    <root level="INFO">
        
        <appender-ref ref="console"/>
        <appender-ref ref="alllog"/>
    </root>
    
    <logger name="com.tingcream" level="debug"></logger>
    
    <logger name="org.springframework.jdbc" level="debug"></logger>
</configuration>