log4j2生产环境配置

<?xml version="1.0" encoding="UTF-8"?>
<!-- status="debug" 可以查看log4j的装配过程-->
<!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->
<Configuration status="OFF" xmlns:log4j='http://jakarta.apache.org/log4j/2.x/'> 
    
    <Properties>
        <Property name="TEST_LOG_ROOT">H:\logs</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT"> 
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/> 
              <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n"/> 
        </Console>
        <RollingFile name="TEST_DEBUG" fileName="${sys:TEST_LOG_ROOT}/TEST_debug.log" filePattern="${sys:TEST_LOG_ROOT}/TEST_debug_%d{yyyy_MM_dd}.log"> 
              <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%c %M %L]-[%p] %m%n"/>
              <Policies> 
                  <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
              </Policies>
	          <Filters>
	          		<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
                	<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
	               	<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
	          </Filters>
           
            <DefaultRolloverStrategy max="7"/> 
            
           </RollingFile>
           <RollingFile name="TEST_INFO" fileName="${sys:TEST_LOG_ROOT}/TEST_info.log" filePattern="${sys:TEST_LOG_ROOT}/TEST_info_%d{yyyy_MM_dd}.log">            
              <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%c %M %L]-[%p] %m%n"/> 
              <Policies> 
                  <!-- 每天一个文件 -->
                  <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
              </Policies>
              <Filters>
                <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
           	  </Filters>
            <DefaultRolloverStrategy max="7"/> 
                
           </RollingFile>
           <RollingFile name="TEST_WARN" fileName="${sys:TEST_LOG_ROOT}/TEST_warn.log" filePattern="${sys:TEST_LOG_ROOT}/TEST_warn_%d{yyyy_MM_dd}.log">            
              <PatternLayout>
                  <pattern>%d{yyyy-MM-dd HH:mm:ss} [%c %M %L]-[%p] %m%n</pattern>
              </PatternLayout> 
              <Policies> 
                  <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
              </Policies>
              <Filters>
              	<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
           </Filters>
            <DefaultRolloverStrategy max="7"/> 
           </RollingFile>
           <RollingFile name="TEST_ERROR" fileName="${sys:TEST_LOG_ROOT}/TEST_error.log" filePattern="${sys:TEST_LOG_ROOT}/TEST_error_%d{yyyy_MM_dd}.log">            
              <PatternLayout>
                  <pattern>%d{yyyy-MM-dd HH:mm:ss} [%c %M %L]-[%p] %m%n</pattern>
              </PatternLayout> 
              <Policies> 
                  <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
              </Policies>
              <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
           </Filters>
           
            <DefaultRolloverStrategy max="7"/> 
                 
           </RollingFile>
           
      </Appenders> 
      <Loggers>
      <!-- 过滤包 -->
      	<Logger name="com.zwz" level="INFO"
      		additivity="false">
      		<AppenderRef ref="Console"/>
      		<AppenderRef ref="TEST_INFO"/>
      		<AppenderRef ref="TEST_ERROR"/>
            <AppenderRef ref="TEST_WARN"/>
      	</Logger>
        <!-- <Root level="INFO" additivity="false">
        	<AppenderRef ref="Console"/>
            <AppenderRef ref="TEST_INFO"/>
            <AppenderRef ref="TEST_ERROR"/>
            <AppenderRef ref="TEST_WARN"/>
        </Root>  -->
      </Loggers>  
</Configuration>

注意:

1、按天分日志文件

关键点在于 filePattern后的日期格式,以及TimeBasedTriggeringPolicy的interval,日期格式精确到哪一位,interval也精确到哪一个单位。我上面时间精确到天,下面就是一天一个文件。

如果精确的分钟或者小时,就是按分钟或者小时一个文件。

2、日志分类别输出到文件中

在生产环境我们可能需要将日志的error,info,debug按照类别分别放在一个文件中,主要配置在Filters标签中。这是一个info中的配置,我们知道log4j的日志默认等级是trace<debug<info<warn<error<fatal,我们想在info中只输出info日志,我们需要这样配置:

<Filters>
                <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
           	  </Filters>
其中onMatech、onMismatch有三个值 ACCEPT/DENY/NEUTRAL根据字面意思我们就能知道了。所以按照顺序过滤掉error、warn类型的log就可以了。

3、过滤包日志

我们有时候想,我的程序我只想记录我自己的日志,不想记得第三方jar中的日志,怎么办了?这里也有办法是解决上面的例子结尾的地方有个Loggers标签下有Logger,这个里面有个属性是name它就是用来过滤包的,只要写上我们自己的包就可以了,比如"com.zwz",这样就只会记录包com.zwz开始的类的log。



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值