root可以理解为一个根节点,而其他的logger都可以看做root的子节点

所以默认root配置的appender属性logger都是使用的,如果不想使用可以logger定义时增加属性additivity="false"

ps:

<logger name="net.jy.redis.controller.logback.LogbackController" level="warn" additivity="false">
<appender-ref ref="stdout"/>
</logger>

 

因为上述关系,在class类使用getLogger("name/class")引入logger时,如果"name/class"未在配置文件中找到,则默认使用root配置

如果匹配到"name/class",则使用匹配到的appender配置的输出,同时可自行选择是否关闭root配置的appender输出

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在程序中经常使用

LoggerFactory.getLogger(Test.class);
其实这种最终转换的logger名成就是Test所在包路径+Test。logback会以这种名称在logback.xml中找相匹配的logger

ps:
package net.jy.redis.controller.logback;

public class LogbackController {
 
private final static Logger logger = LoggerFactory.getLogger(LogbackController.class);

此处代码省略。。。
}

logback.xml
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">


<!-- 定义日志格式-->
<encoder>

<pattern>
%d[%level]%M:%m%n
</pattern>
</encoder>

</appender>
 
<logger name="net.jy.redis.controller.logback.LogbackController" level="warn" additivity="false">
<appender-ref ref="stdout"/>
</logger>

此时日志输出的内容就是以stdout的appender格式输出
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2020-01-16 14:30  总结造就再进步  阅读(5014)  评论(0编辑  收藏  举报