• logback--基础--03--配置--logger


    logback–基础–03–配置–logger


    代码位置

    https://gitee.com/DanShenGuiZu/learnDemo/tree/master/logback-learn
    
    • 1

    1、设置logger

    1.1、< root>

    1. 是< logger>元素,是根logger,已经被命名为"root"
    2. 只有一个level属性
    3. < root>可以包含零个或多个< appender-ref>元素,标识这个appender将会添加到这个logger。

    1.1.1、level

    1. 来设置打印级别
    2. 大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
    3. 不能设置为INHERITED或者同NULL
    4. 默认:DEBUG。

    1.2、< logger>

    1. 用来设置某一个包或者具体的某一个类的日志打印级别、以及指定< appender>

    2. 有3个属性:

      1. name(必须)
      2. level(可选)
      3. addtivity(可选)
    3. < logger>可以包含零个或多个< appender-ref>元素,标识这个appender将会添加到这个logger

    1.2.1、name

    用来指定受此logger约束的某一个包或者具体的某一个类

    1.2.2、level

    1. 用来设置打印级别
    2. 大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
    3. 值:INHERITED或者NULL
      1. 代表强制执行上级的级别。
    4. 如果未设置level,那么当前logger将会继承上级(root)的级别

    1.2.3、addtivity

    1. 是否向上级logger传递打印信息
    2. 默认: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");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    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>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    2.2.2、结果

    在这里插入图片描述

    1. appender的配置表示打印到控制台;
    2. root的打印级别设置默认是 debug,使用的输出配置是名称为limeFlogger的appender。
    3. 当执行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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    2.3.2、结果

    在这里插入图片描述

    1. 当执行Demo2.main方法时,因为Demo2在包fei.zhou.logbacklearn.business.demo中,所以首先执行< logger name=“fei.zhou.logbacklearn.business.demo”/>
      1. fei.zhou.logbacklearn.business.demo" 打印 级别为"info"及大于"info"的日志信息
      2. 没有设置appender,此loger本身不打印任何信息。
      3. 没有设置addtivity,默认为true,将此loger的打印信息向上级(root)传递
    2. 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>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    2.4.2、结果

    在这里插入图片描述

    1. 其中appender的配置表示打印到控制台;
    2. < logger name=“fei.zhou.logbacklearn.business.demo”/>将控制fei.zhou.logbacklearn.business.demo包下的所有类的日志的打印
      1. 没用设置打印级别,所以此loger的继承他的上级< root>的日志级别"error"
      2. 没有设置addtivity,默认为true,将此loger的打印信息向上级传递;
      3. 没有设置appender,此loger本身不打印任何信息。
    3. < logger name=“fei.zhou.logbacklearn.business.demo.Demo2” level=“info” additivity=“false”> 控制lDemo2类的日志打印
      1. 打印级别为"info"
      2. additivity属性为false,表示此loger的打印信息不再向上级传递。
      3. 指定了appender,将日志信息交给 limeFlogger的appender处理,appender将信息打印到控制台
    4. < root level=“error”>
      1. 将root的打印级别设置为"error"
      2. 指定了appender,将日志信息交给 limeFlogger的appender处理,appender将信息打印到控制台
    5. 当执行Demo2类的main方法时,先执行
      1. 将级别为"info"及大于"info"的日志信息交给此loger指定的名为"limeFlogger"的appender处理,在控制台中打出日志
      2. additivity="false,不再向此loger的上级< logger name=“fei.zhou.logbacklearn.business.demo”/> 传递打印信息;
        1. < 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,日志将会打印两次,因为打印信息向上级传递了打印信息

    1. fei.zhou.logbacklearn.business.demo.Demo2本身打印一次
    2. 上级fei.zhou.logbacklearn.business.demo传递虽然没有打印,但是fei.zhou.logbacklearn.business.demo又向上级传递,root接到后又打印一次。

    在这里插入图片描述

  • 相关阅读:
    golang 协程并发代码 demo
    反射机制(复习)
    ChiQA
    (LeetCode C++)全排列
    编程小白如何成为大神?大学新生的最佳入门攻略
    Golang接口实现OCP原则
    鸿蒙HarmonyOS实战-ArkUI事件(手势方法)
    MES管理系统中的质量管理活动是什么
    win11无法打开chm格式的文件
    C开发环境与基础
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/125411045