<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 全局变量 start -->
    <!-- 日志存放路径 -->
    <property name="log.path" value="${LOG_PATH:-.}}"/>
    <!-- 历史日志最多存储的个数 -->
    <property name="log.maxHistory" value="30"/>
    <!-- 单个日志上限大小 -->
    <property name="log.maxFileSize" value="10MB"/>
    <!-- 全局变量 end -->

    <!-- 官方的配置 start -->
    <!-- 保留官方配置,方便使用官方配置的特性,参考:spring-boot-2.1.0.RELEASE.jar!\org\springframework\boot\logging\logback\base.xml -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tempdir:-/tmp}}}/spring.log}" />
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <root level="info">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
    <!-- 官方的配置 end -->

    <!-- api请求日志logger定义 -->
    <appender name="apiRequest-log" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/apiRequest/api-request.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/apiRequest/api-request-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
            <maxHistory>${log.maxHistory}</maxHistory>
            <maxFileSize>${log.maxFileSize}</maxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>%n####################################################################%n%d %-5level [%-18.18thread] - [%X{requestId:-SYSTEM}]: %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <logger name="apiRequest" level="INFO" additivity="false">
        <appender-ref ref="apiRequest-log"/>
    </logger>

    <!-- sql日志logger定义 -->
    <appender name="sql-log" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sql/sql.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/sql/sql-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
            <maxHistory>${log.maxHistory}</maxHistory>
            <maxFileSize>${log.maxFileSize}</maxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>%n####################################################################%n%d %-5level [%-18.18thread] - [%X{requestId:-SYSTEM}]: %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <logger name="sqlLog" level="INFO" additivity="false">
        <appender-ref ref="sql-log"/>
    </logger>

    <!-- 系统错误日志logger定义 -->
    <appender name="sysError-log" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sysError/sysError.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/sysError/sysError-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
            <maxHistory>${log.maxHistory}</maxHistory>
            <maxFileSize>${log.maxFileSize}</maxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>%n####################################################################%n%d %-5level [%-18.18thread] - [%X{requestId:-SYSTEM}]: %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <logger name="sysError" level="INFO" additivity="false">
        <appender-ref ref="sysError-log"/>
    </logger>
</configuration>