<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--  获取yml配置文件信息  -->
    <springProperty scope="context" name="logName" source="logging.file.name"/>
    <springProperty scope="context" name="logPath" source="logging.file.path"/>
    <springProperty scope="context" name="logLevel" source="logging.level.root"/>

    <!-- 输出到控制台 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSSZ}] [%thread] %-5level %logger{36} [%line] - %msg%n</pattern>
        </encoder>
    </appender>


    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logPath}/${logName}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/${logName}.%d{yyyy-MM-dd}.log</fileNamePattern>
            <MaxHistory>7</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSSZ}] [%thread] %-5level %logger{36} [%line]- %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 设置某些包下的日志输出 -->
    <!-- project default level -->
    <logger name="com.api" level="${logLevel}" />
    <!--log4jdbc -->
<!--    <logger name="jdbc.sqltiming" level="${logLevel}"/>-->
    <!--<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>10.16.0.18:5044</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>-->

    <!-- 日志的总开关设置 包括日志级别和 appender -->
    <!-- logger的作用： 1.[name属性]:指定你定义Logger对象时候的name -->
    <!-- 2. additivity : children-logger是否使用 rootLogger的配置, additivity在log4j默认为true。 -->
    <!-- 这解释了为什么有些时候，一个日志信息在屏幕上会有多次输出。 -->
    <!-- 3.还可以指定level(输出级别)、appender-ref(指定哪个append) -->
    <root level="${logLevel}">
        <appender-ref ref="console" />
        <appender-ref ref="rollingFile" />
        <!--<appender-ref ref="LOGSTASH"/>-->
    </root>
</configuration>