SpringBoot番外篇之logback日志使用注意事项

springboot默认的日志配置:logback

根节点:

  <configuration />

主要子节点:

  <appender />:配置日志输出的方式,控制台,文件等。

  <logger />、<root />:作用相同,细节配置不同,logger会覆盖root的日志输出,root是全局配置。

注意事项:

  <logger />的additivity属性默认为true(代表日志继承关系),会查找上一级logger(实际按照包名查找上层logger),找到后不再判断logger的级别要求,直接找到对应的appender配置,将当前日志级别中的日志内容输出到其中。

  上一级logger指的是父级包,日志会根据additivity的取值决定是否将日志输出到上层logger中。

配置两个logger节点:

<appender name="FILE1" class="ch.qos.logback.core.rolling.RollingFileAppender">
  ...
</appender>
<appender name="FILE2" class="ch.qos.logback.core.rolling.RollingFileAppender">
  ...
</appender>
<logger name="org.test.log" level="INFO" additivty="true"><!-- 1 -->
    <appender-ref ref="FILE1"/>
</logger>

<logger name="org.test.log.controller" level="ERROR" additivty="true"><!-- 2 -->
    <appender-ref ref="FILE2"/>
</logger
<!-- 当 1是ERROR,2是INFO时,1的日志文件中会存在2中所输出的info及以上级别的日志信息-->

当additivity=true时,父级包=info,子级包=error。info及以上级别的日志都会输入到父级日志中,在子级代码中有日志操作且只会将error信息输出到子级日志中。(FILE1有所有日志,FILE2只有error日志)

当additivity=false时,父级日志不会写入子级代码中的任何级别日志信息。(FILE1没有controller操作的任何级别日志,FILE2只有error日志)

一般当我们特意要将error日志单独输出时,只要在appender配置中配置filter过滤就可以。

    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">  
        <level>ERROR</level>  
    </filter>

猜你喜欢

转载自blog.csdn.net/FromTheWind/article/details/84986358