Log4j2 LevelRangeFilter过滤器详解示例

后端 潘老师 7个月前 (10-26) 135 ℃ (0) 扫码查看

学习使用log4j的LevelRangeFilter过滤器,如果日志事件中的级别在配置的最小级别和最大级别范围内,则返回onMatch结果,否则返回onMismatch值。

LevelRangeFilter 配置

在给定的 log4j2.xml 文件中,我们使用了 LevelRangeFilter 来过滤日志级别,以便:

  • 所有 info 级别的日志将发送到 application-info.log 文件。
  • 所有 debug 级别的日志将发送到 application-debug.log 文件。
  • 所有 error 级别的日志将发送到 application-error.log 文件。

请根据项目需求更改 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">
 
      <!-- 仅匹配DEBUG级别 -->
      <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" >
 
      <!-- 仅匹配INFO级别-->
      <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">
 
      <!-- 仅匹配ERROR级别 -->
      <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.howtodoinjava.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>

如有疑问,在评论区留言。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/10397.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】