log4j配置异步同步混合输出的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <!-- 日志输出到控制台 -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <!-- 日志输出格式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %5p %c - %m%n"/>
        </layout>
        <!--过滤器设置输出的级别-->
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <!-- 设置日志输出的最小级别 -->
            <param name="levelMin" value="DEBUG"/>
            <!-- 设置日志输出的最大级别 -->
            <param name="levelMax" value="ERROR"/>
        </filter>
    </appender>

    <!-- 滚动记录info级别日志 -->
    <appender name="infoAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="encoding" value="UTF-8"/>
        <!-- 输出文件全路径名-->
        <param name="File" value="${catalina.home}/logs/ysmq-front/info.log"/>
        <!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
        <param name="Append" value="true"/>
        <!--是否启用缓存,默认false-->
        <param name="BufferedIO" value="true"/>
        <!--缓存大小,依赖上一个参数(bufferedIO), 默认缓存大小8K  -->
        <param name="BufferSize" value="8192"/>
        <param name="MaxFileSize" value="300MB"/>
        <param name="MaxBackupIndex" value="100"/>
        <!-- 日志输出格式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %5p %c - %m%n"/>
        </layout>
    </appender>

    <!-- 滚动记录warn级别日志 -->
    <appender name="warnAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="encoding" value="UTF-8"/>
        <!-- 输出文件全路径名-->
        <param name="File" value="${catalina.home}/logs/ysmq-front/warn.log"/>
        <!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
        <param name="Append" value="true"/>
        <param name="Threshold" value="WARN"/>
        <param name="MaxFileSize" value="300MB"/>
        <param name="MaxBackupIndex" value="10"/>
        <!-- 日志输出格式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %5p %c - %m%n"/>
        </layout>
    </appender>

    <!-- 滚动记录warn级别日志 -->
    <appender name="errorAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="encoding" value="UTF-8"/>
        <!-- 输出文件全路径名-->
        <param name="File" value="${catalina.home}/logs/ysmq-front/error.log"/>
        <!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
        <param name="Append" value="true"/>
        <param name="Threshold" value="ERROR"/>
        <param name="MaxFileSize" value="200MB"/>
        <param name="MaxBackupIndex" value="10"/>
        <!-- 日志输出格式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m%n"/>
        </layout>
    </appender>

    <!-- 滚动记录perform日志 -->
    <appender name="perAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="encoding" value="UTF-8"/>
        <!-- 输出文件全路径名-->
        <param name="File" value="${catalina.home}/logs/per.log"/>
        <!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
        <param name="Append" value="true"/>
        <param name="Threshold" value="ERROR"/>
        <!--是否启用缓存,默认false-->
        <param name="BufferedIO" value="true"/>
        <!--缓存大小,依赖上一个参数(bufferedIO), 默认缓存大小8K  -->
        <param name="BufferSize" value="8192"/>
        <param name="MaxFileSize" value="100MB"/>
        <param name="MaxBackupIndex" value="1"/>
        <!-- 日志输出格式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %p %c{1} [%L] - %m%n"/>
        </layout>
    </appender>

    <!-- 滚动记录point日志 -->
    <appender name="pointAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="encoding" value="UTF-8"/>
        <!-- 输出文件全路径名-->
        <param name="File" value="${catalina.home}/logs/point.log"/>
        <!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
        <param name="Append" value="true"/>
        <!--是否启用缓存,默认false-->
        <param name="BufferedIO" value="true"/>
        <!--缓存大小,依赖上一个参数(bufferedIO), 默认缓存大小8K  -->
        <param name="BufferSize" value="4096"/>
        <param name="Threshold" value="INFO"/>
        <param name="MaxFileSize" value="200MB"/>
        <param name="MaxBackupIndex" value="10"/>
        <!-- 日志输出格式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%m%n"/>
        </layout>
    </appender>
    <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
        <appender-ref ref="pointAppender"/>
    </appender>


    <!--
    注意:
    1:当additivity="false"时,root中的配置就失灵了,不遵循缺省的继承机制
    2:logger中的name非常重要,它代表记录器的包的形式,有一定的包含关系,试验表明
     2-1:当定义的logger的name同名时,只有最后的那一个才能正确的打印日志
     2-2:当对应的logger含有包含关系时,比如:name=test.log4j.test8 和 name=test.log4j.test8.UseLog4j,则2-1的情况是一样的
     2-3:logger的name表示所有的包含在此名的所有记录器都遵循同样的配置,name的值中的包含关系是指记录器的名称哟!注意啦!
    3:logger中定义的level和appender中的filter定义的level的区间取交集
    4:如果appender中的filter定义的 levelMin > levelMax ,则打印不出日志信息
    5:代码中使用Logger.getLogger("invoke")获得此输出器,且不会使用根输出器
    -->
    <logger name="per" additivity="false">
        <level value ="ERROR"/>
        <appender-ref ref="perAppender"/>
    </logger>

    <logger name="point" additivity="false">
        <level value ="INFO"/>
        <appender-ref ref="ASYNC"/>
    </logger>

    <!--指定部分类的日志打印级别-->
    <logger name="org.springframework"><level value="INFO"/></logger>
    <logger name="org.apache.ibatis"><level value="INFO"/></logger>
    <logger name="org.apache.zookeeper"><level value="INFO"/></logger>
    <logger name="org.I0Itec"><level value="INFO"/></logger>
    <logger name="com.google.code"><level value="INFO"/></logger>
    <logger name="org.mybatis"><level value="INFO"/></logger>
    <logger name="org.apache.kafka"><level value="INFO"/></logger>
    <logger name="com.amazonaws"><level value="INFO"/></logger>
    <logger name="kafka"><level value="INFO"/></logger>
    <logger name="com.alibaba.dubbo"><level value="INFO"/></logger>
    <logger name="com.baidu.disconf"><level value="INFO"/></logger>
    
    <!-- 根logger的设置,若代码中未找到指定的logger,则会根据继承机制,使用根logger-->
    <root>
        <level value="INFO"/>
<!--        <appender-ref ref="console"/>-->
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="warnAppender"/>
        <appender-ref ref="errorAppender"/>
    </root>

</log4j:configuration>

  文件名:log4j.xml

posted @ 2022-06-30 11:50  CodingChangeTheWorld  阅读(206)  评论(0编辑  收藏  举报