leftso 1242 0 2018-06-25 18:55:35

一.如何使用log4j


本文将讲解如何使用log4j的LevelRangeFilter过滤器,如果LogEvent中的级别处于配置的最小和最大级别的范围内,则返回onMatch,否则返回onMismatch

二.log4j LevelRangeFilter 使用例子


在log4j2.xml配置文件中,我们使用LevelRangeFilter去过滤日志的等级通过以下的方式:
  • 所有info级别的日志将会保存到application-log4j-info.log 文件中
  • 所有debug级别的日志将会保存到application-log4j-debug.log 文件中
  • 所有error级别日志将会保存到application-log4j-error.log 文件中

当然你也可以根据自己的项目进行对log4j的最低等级日志和最高日志等级进行配置,即配置log4j的minLevel和maxLevel属性
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
 
    <Properties>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n</Property>
    </Properties>
 
    <Appenders>
 
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
         
        <RollingFile name="debugLog" fileName="${sys:APP_LOG_ROOT}/application-debug.log"
            filePattern="${sys:APP_LOG_ROOT}/application-debug-%d{yyyy-MM-dd}-%i.log">
 
            <!-- Matches only DEBUG level -->
            <LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
 
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
         
        <RollingFile name="infoLog" fileName="${sys:APP_LOG_ROOT}/application-info.log"
            filePattern="${sys:APP_LOG_ROOT}/application-info-%d{yyyy-MM-dd}-%i.log" >
 
            <!-- Matches only INFO level -->
            <LevelRangeFilter minLevel="INFO" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
 
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
         
        <RollingFile name="errorLog" fileName="${sys:APP_LOG_ROOT}/application-error.log"
            filePattern="${sys:APP_LOG_ROOT}/application-error-%d{yyyy-MM-dd}-%i.log">
 
            <!-- Matches only ERROR level -->
            <LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
 
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
         
    </Appenders>
 
    <Loggers>
     
        <Logger name="com.leftso.app" additivity="false">
            <AppenderRef ref="debugLog" />
            <AppenderRef ref="infoLog"  />
            <AppenderRef ref="errorLog" />
            <AppenderRef ref="Console"  />
        </Logger>
                        
        <Root level="all">
            <AppenderRef ref="Console"/>
        </Root>
 
    </Loggers>
 
</Configuration>