第六章:Spring Boot 默认日志框架配置之loger节点详解(二)

一.loger节点说明

<loger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender><loger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。java

  • name:用来指定受此loger约束的某一个包或者具体的某一个类。
  • level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,表明强制执行上级的级别。若是未设置此属性,那么当前loger将会继承上级的级别。
  • addtivity:是否向上级loger传递打印信息。默认是true。

二.配置策略

  • 带有loger的配置,不指定级别,不指定appender

<logger name="com.dudu.controller" />

将控制controller包下的全部类的日志的打印,可是并没用设置打印级别,因此继承他的上级的日志级别“info”; 
没有设置addtivity,默认为true,将此loger的打印信息向上级传递; 
没有设置appender,此loger自己不打印任何信息。 
<root level="info">root的打印级别设置为“info”,指定了名字为“console”appenderapp

当执行com.dudu.controller.LearnController类的login方法时,LearnController 在包com.dudu.controller中,因此首先执行<logger name="com.dudu.controller"/>,将级别为“info”及大于“info”的日志信息传递给root,自己并不打印; 
root接到下级传递的信息,交给已经配置好的名为“console”的appender处理,“console” appender 将信息打印到控制台;spa

打印结果以下:日志

16:00:17.407 logback [http-nio-8080-exec-8] INFO  com.dudu.controller.LearnController - 日志输出 info
16:00:17.408 logback [http-nio-8080-exec-8] WARN  com.dudu.controller.LearnController - 日志输出 warn
16:00:17.408 logback [http-nio-8080-exec-8] ERROR com.dudu.controller.LearnController -
  • 带有多个loger的配置,指定级别,指定appender

<configuration>
    ...

    <!--logback.LogbackDemo:类的全路径 -->
    <logger name="com.dudu.controller.LearnController" level="WARN" additivity="false">
        <appender-ref ref="console"/>
    </logger>
</configuration>

 

控制com.dudu.controller.LearnController类的日志打印,打印级别为“WARN”; 
additivity属性为false,表示此loger的打印信息再也不向上级传递; 
指定了名字为“console”的appender;
这时候执行com.dudu.controller.LearnController类的login方法时,先执行<logger name="com.dudu.controller.LearnController" level="WARN" additivity="false">,将级别为“WARN”及大于“WARN”的日志信息交给此loger指定的名为“console”的appender处理,在控制台中打出日志,再也不向上级root传递打印信息。code

16:00:17.408 logback [http-nio-8080-exec-8] WARN  com.dudu.controller.LearnController - 日志输出 warn
16:00:17.408 logback [http-nio-8080-exec-8] ERROR com.dudu.controller.LearnController - 日志输出 error

固然若是你把additivity="false"改为additivity="true"的话,就会打印两次,由于打印信息向上级传递,logger自己打印一次,root接到后又打印一次。xml

注意:继承

<configuration>
    ...

    <logger name="com.example.demo.controller" level="WARN" additivity="false">
       <appender-ref ref="consoleLog"/>
    </logger>

    <logger name="com.example.demo.controller"/>

    <logger name="com.example.demo"/>
</configuration>

范围有重叠的话,范围小的,有效。coffeescript

相关文章
相关标签/搜索