<?xml version="1.0" encoding="UTF-8"?>

<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->

<!--Configuration后面的status，这个用于设置log4j2自身内部的信息输出，可以不设置，当设置成trace时，你会看到log4j2内部各种详细输出-->

<!--monitorInterval：Log4j能够自动检测修改配置 文件和重新配置本身，设置间隔秒数-->

<configuration status="WARN" monitorInterval="30">

    <!--先定义所有的appender-->

    <appenders>
        <!--这个输出控制台的配置-->
        <console name="Console" target="SYSTEM_OUT">
            <!--输出日志的格式-->
            <PatternLayout
                    pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%t] [%X{X-B3-TraceId},%X{X-B3-SpanId},%X{X-B3-ParentSpanId},%X{X-Span-Export}] [%p]  - %c - %m%n"/>
        </console>
        <File name="log" fileName="wh-operate/log/test.log" append="false">

            <!-- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> -->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level- %msg%xEx%n"/>
        </File>

        <!-- 这个会打印出所有的info及以下级别的信息，每次大小超过size，则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩，作为存档 -->

        <RollingFile name="RollingFileInfo" fileName="wh-operate/logs/info.log"
                     filePattern="logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">

            <!--控制台只输出level及以上级别的信息（onMatch），其他的直接拒绝（onMismatch） -->

            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>

            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

            <Policies>

                <TimeBasedTriggeringPolicy/>

                <SizeBasedTriggeringPolicy size="100 MB"/>

            </Policies>

        </RollingFile>

    </appenders>

    <!--然后定义logger，只有定义了logger并引入的appender，appender才会生效-->

    <loggers>

        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <logger name="org.hibernate" level="INFO"/>
        <logger name="org.apache" level="INFO"/>
        <logger name="springfox.documentation" level="INFO"/>
        <logger name="com.netflix" level="INFO"/>
        <logger name="io.lettuce.core.protocol.RedisStateMachine" level="INFO"/>
        <logger name="io.lettuce.core.protocol.CommandHandler" level="INFO"/>
        <logger name="io.lettuce.core.protocol.DefaultEndpoint" level="INFO"/>

        <root level="info">
            <appender-ref ref="Console"/>
        </root>

    </loggers>

</configuration>
