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

<!-- RollingRandomAccessFile的属性：
fileName  指定当前日志文件的位置和文件名称
filePattern  指定当发生Rolling时，文件的转移和重命名规则
SizeBasedTriggeringPolicy  指定当文件体积大于size指定的值时，触发Rolling
DefaultRolloverStrategy  指定最多保存的文件个数

TimeBasedTriggeringPolicy  这个配置需要和filePattern结合使用，
注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i，最小的时间粒度是mm，即分钟，
TimeBasedTriggeringPolicy指定的size是1，结合起来就是每1分钟生成一个新文件。
如果改成%d{yyyy-MM-dd HH}，最小粒度为小时，则每一个小时生成一个文件。 -->
<Configuration status="off" monitorInterval="30">

    <properties>
        <property name="log_path">logs</property>
    </properties>

    <Appenders>
        <!-- <NoSql name="databaseAppender">  
            <MongoDb databaseName="db_cloud_device" collectionName="extract-invoice_log"  
                server="127.0.0.1" port="27017" userName="gzds" password="Gzds1130" />  
        </NoSql> -->
        <!-- 打印台  -->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制台只输出level及以上级别的信息-->
            <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss} %level [%file:%line] - %msg%n"/>
        </Console>

        <RollingRandomAccessFile name="InfoFile"
                                 fileName="${log_path}/info/info.log"
                                 filePattern="${log_path}/info/info-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
<!--            <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss} %level [%file:%line] - %msg%n"/>-->

            <Policies>
                <!-- 归档每天的文件 -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <!-- 限制单个文件大小 -->
                <SizeBasedTriggeringPolicy size="20 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="30"/>
        </RollingRandomAccessFile>

        <RollingRandomAccessFile name="WarnFile" fileName="${log_path}/warn/warn.log"
                                 filePattern="${log_path}/error/error-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="%date{yyyy-MM-dd_HH:mm:ss} %level [%file:%line] - %msg%n"/>
            <Policies>
                <!-- 归档每天的文件 -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <!-- 限制单个文件大小 -->
                <SizeBasedTriggeringPolicy size="20 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="30"/>
        </RollingRandomAccessFile>

        <RollingRandomAccessFile name="ErrorFile"
                                 fileName="${log_path}/error/error.log"
                                 filePattern="${log_path}/error/error-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
<!--            <PatternLayout pattern="%date{yyyy-MM-dd_HH:mm:ss} %level [%file:%line] - %msg%n"/>-->
            <JsonLayout/>
            <Policies>
                <!-- 归档每天的文件 -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <!-- 限制单个文件大小 -->
                <SizeBasedTriggeringPolicy size="20 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="30"/>
        </RollingRandomAccessFile>

    </Appenders>
    <Loggers>
        <Root level="info">
            <appender-ref ref="Console"/>
            <appender-ref ref="InfoFile"/>
            <appender-ref ref="WarnFile"/>
            <appender-ref ref="ErrorFile"/>
        </Root>
    </Loggers>
</Configuration>  