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

浙公网安备 33010602011771号