<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <!-- ========================== 自定义输出格式说明================================ -->
    <!-- %p 输出优先级，即ERROR，INFO，WARN，ERROR，FATAL -->
    <!-- %r 输出自应用启动到输出该log信息耗费的毫秒数  -->
    <!-- %c 输出所属的类目，通常就是所在类的全名 -->
    <!-- %t 输出产生该日志事件的线程名 -->
    <!-- %n 输出一个回车换行符，Windows平台为“\r\n”，Unix平台为“\n” -->
    <!-- %m 输出代码中指定的信息，如log(message)中的message  -->
    <!-- %d 输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy MMM dd HH:mm:ss,SSS}，输出类似：2002年10月18日 22：10：28，921  -->
    <!-- %l 输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数。举例：Testlog4.main(TestLog4.java:10)  -->
    <!-- ========================================================================== -->

    <!-- ========================== 输出方式说明================================ -->
    <!-- Log4j提供的appender有以下几种:  -->
    <!-- org.apache.log4j.ConsoleAppender(控制台),  -->
    <!-- org.apache.log4j.FileAppender(文件),  -->
    <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), -->
    <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),  -->
    <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)   -->
    <!-- ========================================================================== -->

    <!-- 输出到日志文件（其他部分的日志） -->
    <!-- 每天产生一个日志文件 -->
    <appender name="app_filelog" class="org.apache.log4j.DailyRollingFileAppender">
        <!-- 设置File参数：日志输出文件名 -->
        <param name="File" value="${catalina.home}/logs/house365-hgs.log" />
        <!-- 设置是否在重新启动服务时，在原有日志的基础添加新日志 -->
        <param name="Append" value="true" />
        <param name="DatePattern" value="'.'yyyy-MM-dd" />
        <!-- 设置输出文件项目和格式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %-d{yyyy-MM-dd HH:mm:ss} [%c.%M(%L)] - %m%n" />
        </layout>
    </appender>

    <!-- 输出到控制台中 -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p: [%c.(%L)%M] - %m%n" />
        </layout>
    </appender>

    <!-- 输出到控制台中 -->
    <appender name="other_console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d] [%-5p] %c %n--%m--%n" />
        </layout>
    </appender>

    <appender name="sysLogERRORAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <!-- 设置File参数：日志输出文件名 -->
        <param name="File" value="${catalina.home}/logs/SYSLOG/ERROR.log" />
        <param name="DatePattern" value="'.'yyyy-MM-dd" />
        <!-- 设置输出文件项目和格式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %-d{yyyy-MM-dd HH:mm:ss, SSS} [%c.%M(%L)] - %m%n" />
        </layout>
        <!-- 设置记录ERROR级别日志 -->
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="ERROR" />
            <param name="LevelMin" value="ERROR" />
        </filter>
    </appender>
    <appender name="sysLogInfoAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <!-- 设置File参数：日志输出文件名 -->
        <param name="File" value="${catalina.home}/logs/SYSLOG/INFO.log" />
        <param name="DatePattern" value="'.'yyyy-MM-dd" />
        <!-- 设置输出文件项目和格式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %-d{yyyy-MM-dd HH:mm:ss, SSS} [%c.%M(%L)] - %m%n" />
        </layout>
        <!-- 设置记录ERROR级别日志 -->
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="INFO" />
            <param name="LevelMin" value="INFO" />
        </filter>
    </appender>
    <appender name="sysLogWarnAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <!-- 设置File参数：日志输出文件名 -->
        <param name="File" value="${catalina.home}/logs/SYSLOG/ERROR.log" />
        <param name="DatePattern" value="'.'yyyy-MM-dd" />
        <!-- 设置输出文件项目和格式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %-d{yyyy-MM-dd HH:mm:ss, SSS} [%c.%M(%L)] - %m%n" />
        </layout>
        <!-- 设置记录ERROR级别日志 -->
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="WARN" />
            <param name="LevelMin" value="WARN" />
        </filter>
    </appender>

    <logger name="org.springframework" additivity="false">
        <level value="WARN"/>
        <appender-ref ref="console"/>
    </logger>

    <logger name="org.apache.activemq" additivity="false">
        <level value="WARN"/>
        <appender-ref ref="console"/>
    </logger>

    <logger name="com.alibaba.dubbo" additivity="false">
        <level value="WARN"/>
        <appender-ref ref="console"/>
    </logger>
    <logger name="org.apache.zookeeper" additivity="false">
        <level value="WARN"/>
        <appender-ref ref="console"/>
    </logger>
    <logger name="org.I0Itec.zkclient" additivity="false">
        <level value="WARN"/>
        <appender-ref ref="console"/>
    </logger>

    <!-- 设置类名限制输出的通道（Connection） -->
    <logger name="java.sql.Connection" additivity="false">
        <level value="ERROR" />
        <appender-ref ref="other_console" />
        <appender-ref ref="app_filelog" />
    </logger>

    <!-- 设置类名限制输出的通道（Statement） -->
    <logger name="java.sql.Statement" additivity="false">
        <level value="ERROR" />
        <appender-ref ref="other_console" />
        <appender-ref ref="app_filelog" />
    </logger>

    <!-- 设置类名限制输出的通道（PreparedStatement） -->
    <logger name="java.sql.PreparedStatement" additivity="false">
        <level value="ERROR" />
        <appender-ref ref="other_console" />
        <appender-ref ref="app_filelog" />
    </logger>

    <!-- 设置类名限制输出的通道（ResultSet） -->
    <logger name="java.sql.ResultSet" additivity="false">
        <level value="ERROR" />
        <appender-ref ref="other_console" />
        <appender-ref ref="app_filelog" />
    </logger>

    <logger name="org.apache.commons" additivity="false">
        <level value="WARN" />
        <appender-ref ref="console" />
    </logger>
    <logger name="org.apache.shiro" additivity="false">
        <level value="WARN" />
        <appender-ref ref="console" />
    </logger>
    <logger name="com.mangofactory.swagger" additivity="false">
        <level value="ERROR" />
        <appender-ref ref="console" />
    </logger>

    <!-- 设置类名限制输出的通道（接口访问） -->
    <logger name="InterfaceLog" additivity="false">
        <level value="WARN" />
        <appender-ref ref="sysLogInfoAppender" />
    </logger>

    <!-- 设置接收所有输出的通道 -->
    <root>
        <level value="WARN" />
        <appender-ref ref="console"/>
    </root>

</log4j:configuration>
