<?xml version="1.0"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="rootPath" value="${catalina.base}/logs" />
<!-- learn appender -->
<appender name="learn_debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/learn_debug.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/learn_debug-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg%n
</pattern>
</layout>
</appender>
<appender name="learn_errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/learn_error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/learn_error-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg %n
</pattern>
</layout>
</appender>
<appender name="learn_ImgAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/base64_img.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/base64_img-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg %n
</pattern>
</layout>
</appender>
<!-- biz appender -->
<appender name="biz_debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/biz_debug.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/biz_debug-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg%n
</pattern>
</layout>
</appender>
<appender name="biz_errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/biz_error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/biz_error-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg %n
</pattern>
</layout>
</appender>
<!-- base appender -->
<appender name="base_debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/base_debug.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/base_debug-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg%n
</pattern>
</layout>
</appender>
<appender name="base_errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/base_error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/base_error-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg %n
</pattern>
</layout>
</appender>
<!-- other appender -->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg%n
</pattern>
</encoder>
</appender>
<appender name="sqlAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/sql.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/sql-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg %n
</pattern>
</layout>
</appender>
<appender name="dev_debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/dev_debug.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/dev_debug-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg %n
</pattern>
</layout>
</appender>
<!-- 第三方框架 -->
<appender name="framework_appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/framework_lib.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/framework_lib-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg %n
</pattern>
</layout>
</appender>
\
<appender name="payBank_MsgAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${rootPath}/payBank_msg.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${rootPath}/payBank_msg-%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>31</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%-5p] %logger{36} | %msg%n
</pattern>
</layout>
</appender>
<!-- learn loggers -->
<logger name="com.xxh.learn" additivity="false">
<level value="ALL" />
<appender-ref ref="learn_debugAppender"/>
<appender-ref ref="learn_errorAppender"/>
</logger>
<!-- biz loggers -->
<logger name="com.xxh.biz" additivity="false">
<level value="ALL" />
<appender-ref ref="biz_debugAppender"/>
<appender-ref ref="biz_errorAppender"/>
</logger>
<!-- base loggers -->
<logger name="com.xxh.base" additivity="false">
<level value="ALL" />
<appender-ref ref="base_debugAppender"/>
<appender-ref ref="base_errorAppender"/>
</logger>
<!-- dev loggers -->
<logger name="com.xxh.dev" additivity="false">
<level value="DEBUG" />
<appender-ref ref="dev_debugAppender"/>
</logger>
<!-- 第三方框架 loggers -->
<logger name="com.mysql" additivity="false">
<level value="DEBUG" />
<appender-ref ref="sqlAppender"/>
</logger>
<logger name="org.mybatis" additivity="false">
<level value="DEBUG" />
<appender-ref ref="framework_appender"/>
</logger>
<logger name="org.springframework" additivity="false">
<level value="DEBUG" />
<appender-ref ref="framework_appender"/>
</logger>
<logger name="org.quartz" additivity="false">
<level value="DEBUG" />
<appender-ref ref="framework_appender"/>
</logger>
<logger name="org.apache" additivity="false">
<level value="DEBUG" />
<appender-ref ref="framework_appender"/>
</logger>
<logger name="MSG.com.xxh.learn" additivity="false">
<level value="INFO" />
<appender-ref ref="payBank_MsgAppender"/>
</logger>
<logger name="IMG.com.xxh.learn" additivity="false">
<level value="INFO" />
<appender-ref ref="learn_ImgAppender"/>
</logger>
<logger name="MSG.com.xxh.biz" additivity="false">
<level value="INFO" />
<appender-ref ref="payBank_MsgAppender"/>
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="consoleAppender" />
</root>
</configuration>