Log4j的日志配置概要

  1. appender 日志输出的目的地,可以通过filter设置,过滤日志,其日志级别的优先级最大,可以定义多个appender
    常用参数:
    日志级别 Threshold
    过滤器 filter (LevelRangeFilter,DenyAllFilter)
    常见的appender
<!-- 输出日志到控制台  ConsoleAppender -->   
 <appender name="console"   
        class="org.apache.log4j.ConsoleAppender">  
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/> 
    </layout>
       <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
        <param name="levelMin" value="INFO"/>  
        <param name="levelMax" value="FATAL"/>  
        <param name="acceptOnMatch" value="true"/> 
      </filter>  
</appender>  
<appender name="file"  
        class="org.apache.log4j.FileAppender">  
        <param name="File" value="/tmp/file.log"></param>  
        <param name="Threshold" value="info"></param>  
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>  
        </layout>  
    </appender>
<!-- perf4j的统计-->  
  <appender name="CoalescingStatistics" class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender"> 
    <param name="TimeSlice" value="600000"/>  
    <appender-ref ref="Performance"/> 
  </appender>  
  1. rootLogger 没有定义子logger的优先级都使用rootLogger的优先级。
  <root> 
    <priority value="INFO"/>  
    <appender-ref ref="console"/> 
    <appender-ref ref="file"/> 
  </root> 
  1. 日志级别具有继承关系,可以通过com.company的方式定义多个自logger
    比如针对perf4j的logger
    <logger name="org.perf4j.TimingLogger" additivity="false">
        <level value="INFO"/>
        <appender-ref ref="CoalescingStatistics"/>
    </logger>

针对某个业务:com.company.protocol包下的logger

     <logger name="com.company.protoco" additivity="false">
        <level value="ERROR"/>
        <appender-ref ref="console"/>
      </logger>

这样logger的日志级别优先级会大于rootLogger的日志级别,也就是即使rootLogger设置为ERROR,org.perf4j.TimingLogger的INFO日志仍会正常输出。另外,由于使用了additivity属性,日志只会通过console,不会再父logger(这里指rootLogger)中输出。

  1. 关于appender的继承性,如果logger的是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出

参考文档

https://wiki.apache.org/logging-log4j/Log4jXmlFormat

推荐阅读更多精彩内容

  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 2,789评论 1 13
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 3,039评论 0 6
  • from:https://www.cnblogs.com/ITtangtang/p/3926665.html一、L...
    enshunyan阅读 1,681评论 0 0
  • 一、Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layo...
    默默守护阅读 1,064评论 2 8
  • #########################################################...
    BearFaraway阅读 1,121评论 0 51