logback–基础–03–配置–logger
代码位置
https://gitee.com/DanShenGuiZu/learnDemo/tree/master/logback-learn
1、设置logger
1.1、< root>
- 是< logger>元素,是根logger,已经被命名为"root"
- 只有一个level属性
- < root>可以包含零个或多个< appender-ref>元素,标识这个appender将会添加到这个logger。
1.1.1、level
- 来设置打印级别
- 大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
- 不能设置为INHERITED或者NULL
- 默认:DEBUG。
1.2、< logger>
-
用来设置某一个包或者具体的某一个类的日志打印级别、以及指定< appender>
-
有3个属性:
- name(必须)
- level(可选)
- addtivity(可选)
-
< logger>可以包含零个或多个< appender-ref>元素,标识这个appender将会添加到这个logger
1.2.1、name
用来指定受此logger约束的某一个包或者具体的某一个类
1.2.2、level
- 用来设置打印级别
- 大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
- 值:INHERITED或者NULL
- 代表强制执行上级的级别。
- 如果未设置level,那么当前logger将会继承上级(root)的级别
1.2.3、addtivity
- 是否向上级logger传递打印信息
- 默认:true。
2、测试
2.1、公共配置
public class Demo2 {
private static final Logger limeFloger = LoggerFactory.getLogger(Demo2.class);
public static void main(String[] args) {
limeFloger.trace("------trace");
limeFloger.debug("------debug");
limeFloger.info("------info");
limeFloger.warn("------warn");
limeFloger.error("------error");
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/67bfa8f613b141d3b23c43ffa606427f.png#pic_center)
2.2、测试–>只配置root
2.2.1、logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="contextName" value="limeLog"/>
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HH:mm:ss"/>
<contextName>${contextName} - ${bySecond}</contextName>
<!-- 表示打印到控制台 -->
<appender name="limeFlogger" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 默认配置为PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root>
<appender-ref ref="limeFlogger"/>
</root>
</configuration>
2.2.2、结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/5d43b6c4780c4d31bd4d86eb98172bf2.png#pic_center)
- appender的配置表示打印到控制台;
- root的打印级别设置默认是 debug,使用的输出配置是名称为limeFlogger的appender。
- 当执行main方法时,root将级别为DEBUG"及大于"DEBUG的日志信息 交给 limeFlogger的appender处理,appender将信息打印到控制台
2.3、测试–>带有logger的配置,不指定级别,不指定appender
2.3.1、logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="contextName" value="limeLog"/>
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HH:mm:ss"/>
<contextName>${contextName} - ${bySecond}</contextName>
<!-- 表示打印到控制台 -->
<appender name="limeFlogger" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 默认配置为PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!--
1. 将控制fei.zhou.logbacklearn.business.demo包下的所有类的日志的打印
2. 没用设置打印级别,所以继承他的上级<root>的日志级别"info";
3. 没有设置addtivity,默认为true,将此loger的打印信息向上级传递
4. 没有设置appender,此loger本身不打印任何信息。
-->
<logger name="fei.zhou.logbacklearn.business.demo"/>
<!-- 将root的打印级别设置为"info",指定了名字为"limeLogback"的appender。-->
<root level="info">
<!--使用哪个输出配置-->
<appender-ref ref="limeFlogger"/>
</root>
</configuration>
2.3.2、结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/fe020998f09645ff8a2f2be0e6dea2d3.png#pic_center)
- 当执行Demo2.main方法时,因为Demo2在包fei.zhou.logbacklearn.business.demo中,所以首先执行< logger name=“fei.zhou.logbacklearn.business.demo”/>
- fei.zhou.logbacklearn.business.demo" 打印 级别为"info"及大于"info"的日志信息
- 没有设置appender,此loger本身不打印任何信息。
- 没有设置addtivity,默认为true,将此loger的打印信息向上级(root)传递
- root接到下级传递的信息,交给 limeFlogger的appender处理,appender将信息打印到控制台
2.4、测试–>带有多个loger的配置,指定级别,指定appender
2.4.1、logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="contextName" value="limeLog"/>
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HH:mm:ss"/>
<contextName>${contextName} - ${bySecond}</contextName>
<!-- 表示打印到控制台 -->
<appender name="limeFlogger" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 默认配置为PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 将控制fei.zhou.logbacklearn.business.demo包下的所有类的日志的打印 -->
<logger name="fei.zhou.logbacklearn.business.demo"/>
<!-- 将控制fei.zhou.logbacklearn.business.demo.Demo2 类的日志的打印 -->
<logger name="fei.zhou.logbacklearn.business.demo.Demo2" level="info" additivity="false">
<appender-ref ref="limeFlogger"/>
</logger>
<root level="error">
<appender-ref ref="limeFlogger"/>
</root>
</configuration>
2.4.2、结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/63db0ae8b59a470b998de0315eb6d455.png#pic_center)
- 其中appender的配置表示打印到控制台;
- < logger name=“fei.zhou.logbacklearn.business.demo”/>将控制fei.zhou.logbacklearn.business.demo包下的所有类的日志的打印
- 没用设置打印级别,所以此loger的继承他的上级< root>的日志级别"error"
- 没有设置addtivity,默认为true,将此loger的打印信息向上级传递;
- 没有设置appender,此loger本身不打印任何信息。
- < logger name=“fei.zhou.logbacklearn.business.demo.Demo2” level=“info” additivity=“false”> 控制lDemo2类的日志打印
- 打印级别为"info"
- additivity属性为false,表示此loger的打印信息不再向上级传递。
- 指定了appender,将日志信息交给 limeFlogger的appender处理,appender将信息打印到控制台
- < root level=“error”>
- 将root的打印级别设置为"error"
- 指定了appender,将日志信息交给 limeFlogger的appender处理,appender将信息打印到控制台
- 当执行Demo2类的main方法时,先执行
- 将级别为"info"及大于"info"的日志信息交给此loger指定的名为"limeFlogger"的appender处理,在控制台中打出日志
- additivity="false,不再向此loger的上级< logger name=“fei.zhou.logbacklearn.business.demo”/> 传递打印信息;
- < logger name=“fei.zhou.logbacklearn.business.demo”/>未接到任何打印信息,当然也不会给它的上级root传递任何打印信息
2.4.3、additivity测试
如果将< logger name=“fei.zhou.logbacklearn.business.demo.Demo2” level=“info” additivity=“false”> 的additivity 修改为true,日志将会打印两次,因为打印信息向上级传递了打印信息
- fei.zhou.logbacklearn.business.demo.Demo2本身打印一次
- 上级fei.zhou.logbacklearn.business.demo传递虽然没有打印,但是fei.zhou.logbacklearn.business.demo又向上级传递,root接到后又打印一次。
![在这里插入图片描述](https://img-blog.csdnimg.cn/5b90098f0dcc4a26816ced2b56730a31.png#pic_center)