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

2023-11-02

logback–基础–03–配置–logger


代码位置
https://gitee.com/DanShenGuiZu/learnDemo/tree/master/logback-learn

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");
    }
}

在这里插入图片描述

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、结果

在这里插入图片描述

  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>

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>

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接到后又打印一次。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

logback--基础--03--配置--logger 的相关文章

随机推荐

  • 读阮一峰ES6对象解构赋值小细节

    最近看阮一峰的ES6发现了个地方有点不懂 理解之后 特意记录下来 let obj let arr foo obj prop bar arr 0 foo 123 bar true obj prop 123 arr true 就是上面这块 首先
  • NavicatPremium连接MySQL出现异常Authentication plugin ‘caching_sha2_password‘ cannot be loaded的解决方案

    一 出现异常原因 由于个人本机安装的mysql是8 0 在使用Navicat连接数据库时 出现Authentication plugin caching sha2 password cannot be loaded异常 通过搜集资料得知my
  • 几种常用的无源滤波器的特征

    无源滤波器的缺点 带负载能力差 无放大作用 特性不理想 边沿不陡峭 各级相互影响 滤波器是一种通过一定频率的信号而阻止或衰减其他频率信号的部件 分类 按照处理信号形式 模拟滤波器和数字滤波器 按功能分 低通 高通 带通 带阻 按电路组成分
  • Visio中实现任意两点之间的连线

    参考博客01 https blog csdn net wanzhen4330 article details 84837279 想实现的效果 如下图所示 想要实现的是像下面图中 让箭头线段多次弯折 最终连接两个矩形方框 二 做法 在Visi
  • SQLServer数据库密码已过期问题 处理

    Sqlserver在设置登录账户信息的时候 有个复选框信息会被默认勾上 即强制实施密码策略 默认勾选上的还有强制密码过期 如果勾上了这个强制密码过期后 则你的账户密码在一定时间登录后会提示Sqlserver登录密码已过期请重新设置密码 如果
  • docker-management遇到的一些问题

    一个mysql节点 两个cloudstack management节点 先启动mysql节点 如果cloudstack management容器节点无法访问mysql节点 注意docker宿主机的iptables规则 启动cloudstac
  • 总结一波安卓组件化开源方案

    摘要 为了让大家能快速对android组件化有个整体的认识 本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比 从而更好的区分各组件化方案的特点 快速选择适合自己使用的方案深入学习并使用 在面试中被问到时也能做到心中有数 前
  • PCL 从深度图像中提取边界

    一 图像边界 深度图像边界 计从前景跨越到背景的位置定义为边界 具体有 物体边界 这是物体的最外层和阴影边界的可见点集 阴影边界 毗邻与遮挡的背景上的点集 Veil点集 在被遮挡物边界和阴影边界之间的内插点 它们是有激光雷达获取的3D距离数
  • docker基础6——制作镜像(dockerfile)

    文章目录 一 基本了解 1 1 基于centos构建镜像 1 2 基于alpine制作镜像 二 常用指令 三 制作httpd镜像 一 基本了解 Dockerfile 是一个文本格式的配置文件 可以使用Dockerfile 快速创建自定义镜像
  • 飞机降落(dfs 全排列)

    题目描述 N 架飞机准备降落到某个只有一条跑道的机场 其中第 i 架飞机在 Ti 时刻到达机场上空 到达时它的剩余油料还可以继续盘旋 Di 个单位时间 即它最早 可以于 Ti 时刻开始降落 最晚可以于 Ti Di 时刻开始降落 降落过程需要
  • C# 枚举 enum(学习心得 17)

    枚举是一组命名整型常量 枚举类型是使用 enum 关键字声明的 C 枚举是值类型 枚举包含自己的值 且不能继承或传递继承 超级小白友好 讲解C 基础 每集5分钟轻松学习 拒绝从入门到放弃 声明 enum
  • linux服务器无法ssh怎么解决,linux服务器有可能无法连接ssh

    新安装的linux服务器有可能无法连接ssh 这可是怎么办 我的服务器是centOS6 9的版本 1 首先关闭 SELINUX vi etc selinux config SELINUX enforcing 注释掉 SELINUXTYPE
  • SpringBoot三种注解启动方式

    1 SpringBoot内置了Tomcat Jetty等容器 所以可以通过注解方式进行启动 2 SpringBoot注解启动的原理 SpringBoot main方法 是程序入口 启动SpringBoot项目 创建内置tomcat服务器 使
  • windows 10 webrtc 下载与编译以及遇到的问题

    下载 1 由于webrtc 源码在 墙外 所以需要科学上网 自行解决 当然现在webrtc 有国内的镜像地址 https webrtc org cn mirror 内附编译下载教程自行查阅 下载后只包含M79 和最新的master 分支 由
  • dao层动态sql利器!数据持久化jpa插件spring-data-jpa-extra?Fenix!

    把hibernate mybatis都整合到一个项目中 有没有觉得臃肿繁琐 我们知道 dao层 会用数据持久化框架 如hibernate mybatis等 他们都实现了jpa规范 几年来 spring想统领这个层 有spring jpa d
  • 追踪邮件发送者的地理位置

    今天偶然发现Gmail可以追踪发送者的IP位置 于是忍不住跃跃欲试 邮件不只有文本内容 还有额外的信息在每个邮件的header里面 一般的邮件客户端都是不能查看header的 Gmail和雅虎邮箱可以 网易邮箱的查看信头也能实现 打开Gma
  • 【GitHubShare】Web 前后端开发、以太坊基础、智能合约、密码学、数据分析

    区块链开发指南 作者通过 NFT 进行募资 然后将资金用于激励社区创作 让参与教程编写的人都能获益 从项目创建之初 教程便一直保持开放 GitHub github com dcbuild3r blockchain development g
  • 第二章 主机到网络层(网卡)--基于Linux3.10

    TCP IP协议栈模型 网络协议栈常用OSI七层模型 实际上Linux网络协议栈使用的却是四层模型 图2 1展示了OSI七层和四层模型它们之间各层对应关系 图2 1的最左侧一列是数据在协议栈上各层的称谓 frame位于主机到网络层 Laye
  • C++数组(数组定义方式、数组名作用、数组地址)

    文章目录 1 数组概述 2 一维数组 2 1 一维数组定义方式 2 2 一维数组数组名 2 2 1 一维数组名称的作用 2 2 2 一维数组名的2种特例情况 2 3 一维数组的地址 2 4 冒泡排序 3 二维数组 3 1 二维数组定义方式
  • logback--基础--03--配置--logger

    logback 基础 03 配置 logger 代码位置 https gitee com DanShenGuiZu learnDemo tree master logback learn 1 设置logger 1 1 lt root gt