logback 初探学习

devtools/2024/11/25 3:31:24/

logback 三大模块

记录器(Logger)、追加器(Appender)和布局(Layout)

配置文件外层最基本的标签如图示

xml中定义的就是这个三个东西下面进入学习

包引入参考springboot 官方文档 Logging :: Spring Boot
我用的是springboot项目进行学习的,所以仅仅导入spring-boot-starter-web一个依赖就行,它默认使用的就是slf4j作为日志接口门面,使用logback作为默认接口实现,如图示

1.日志等级划分

1.基础输出

具体详情请参考官方文档:Chapter 2: Architecture

log等级划分为 trace < debug < info < warn < error
假设log定义为info时候,打印日志如果小于info,那么日志不会进行输出,样例如下:

java">    //由于配置定义的是 info 集别  根据 集别优先级 所以不会打印 trace和debug//trace < debug <info <warn < errorch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("simple.consoleAppender");@GetMapping("/simpleConsoleAppender")public String index() {logger.trace("simple.consoleAppender [ trace ] hello world ");logger.debug("simple.consoleAppender [ debug ] hello world ");logger.info("simple.consoleAppender [ info ] hello world ");logger.warn("simple.consoleAppender [ warn ] hello world ");logger.error("simple.consoleAppender [ error ] hello world ");//return "index";}

2.父子关系演示

关于日志还有父子关系的结构,可以认为就是java类父子关系,假设定义日志名称为com.group.order.service,那么logback 就会创建关系为:root->com->group->order->service
的5种日志name。如果你用的是com.group 输出的日志,那么就会向上依次查找,如果都没有定义,那么使用默认root级别level,默认为debug级别,下面是演示

java">//由于配置定义的是 info 集别  根据 集别优先级 所以不会打印 trace和debug//trace < debug <info <warn < errorch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("simple.consoleAppender");ch.qos.logback.classic.Logger loggerSimple = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("simple");ch.qos.logback.classic.Logger rootLogger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);@GetMapping("/simpleConsoleAppender")public String index() {
//定义的info级别logger.trace("simple.consoleAppender [ trace ] hello world ");logger.debug("simple.consoleAppender [ debug ] hello world ");logger.info("simple.consoleAppender [ info ] hello world ");logger.warn("simple.consoleAppender [ warn ] hello world ");logger.error("simple.consoleAppender [ error ] hello world ");//
//未定义的simple日志 会自动向上查询level级别loggerSimple.trace("loggerSimple.consoleAppender [ trace ] hello world ");loggerSimple.debug("loggerSimple.consoleAppender [ debug ] hello world ");loggerSimple.info("loggerSimple.consoleAppender [ info ] hello world ");loggerSimple.warn("loggerSimple.consoleAppender [ warn ] hello world ");loggerSimple.error("loggerSimple.consoleAppender [ error ] hello world ");//
//打印root 的默认集别System.out.println("root level = " + rootLogger.getEffectiveLevel());//return "index";}

以上demo的xml配置如下  spring-logback.xml

<!--<configuration debug="true">-->
<configuration ><logger name="simple.consoleAppender" level="INFO" /><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!-- encoders are assigned the typech.qos.logback.classic.encoder.PatternLayoutEncoder by default --><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="debug"><appender-ref ref="STDOUT" /></root></configuration>

 2.log xml 定义

1.最简单的输出定义

参考上面xml定义。记录器(Logger)、追加器(Appender)
就是上面的logger标签和appender标签,
logger主要就是两个属性,日志名称name和日志级别level

2.Appender分析

顶级接口Appender两个实现类

这里主要分析,UnsynchronizedAppenderBase,因为后续主要围绕这几个实现类来做日志配置

主要使用的就是下面这些

ConsoleAppender 控制台打印日志输出:Chapter 4: Appenders
WARNING Please note the console is comparatively slow, even very slow. You should avoid logging to the console in production, especially in high volume systems.
警告:请注意,控制台相对较慢,甚至非常慢。在生产环境中,尤其是在高流量系统中,应避免向控制台输出日志。

FileAppender 文件日志输出:第 4 章:附加程序

RollingFileAppender 可备份滚动日志文件 第 4 章:附加程序

个人学习视频记录 结合官方文档自学logback_哔哩哔哩_bilibili


http://www.ppmy.cn/devtools/136733.html

相关文章

MacOS下的Opencv3.4.16的编译

前言 MacOS下编译opencv还是有点麻烦的。 1、Opencv3.4.16的下载 注意&#xff0c;我们使用的是Mac&#xff0c;所以ios pack并不能使用。 如何嫌官网上下载比较慢的话&#xff0c;可以考虑在csdn网站上下载&#xff0c;应该也是可以找到的。 2、cmake的下载 官网的链接&…

C 语言复习总结记录二

C 语言复习总结记录二 一 控制语句 1、语句的分类 表达式语句函数调用语句复合语句控制语句空语句 控制语句 控制程序的执行流程&#xff0c;实现程序的各种结构方式 C 语言支持三种结构 &#xff1a;顺序结构、选择结构、循环结构&#xff0c;由特定的语句定义符组成C语言…

魔众题库系统 v10.0.0 客服条、题目导入、考试导航、日志一大批更新

魔众题库系统基于PHP开发&#xff0c;可以用于题库管理和试卷生成软件&#xff0c;拥有极简界面和强大的功能&#xff0c;用户遍及全国各行各业。 魔众题库系统发布v10.0.0版本&#xff0c;新功能和Bug修复累计30项&#xff0c;客服条、题目导入、考试导航、日志一大批更新。 …

Easyexcel(5-自定义列宽)

相关文章链接 Easyexcel&#xff08;1-注解使用&#xff09;Easyexcel&#xff08;2-文件读取&#xff09;Easyexcel&#xff08;3-文件导出&#xff09;Easyexcel&#xff08;4-模板文件&#xff09;Easyexcel&#xff08;5-自定义列宽&#xff09; 注解 ColumnWidth Data…

《线性代数的本质》

之前收藏的一门课&#xff0c;刚好期末复习&#xff0c;顺便看一看哈哈 课程链接&#xff1a;【线性代数的本质】合集-转载于3Blue1Brown官方双语】 向量究竟是什么 线性代数中最基础、最根源的组成部分就是向量&#xff0c;需要先明白什么是向量 不同专业对向量的看法 物理专…

动态规划 详解

动态规划&#xff08;Dynamic Programming, DP&#xff09;详解 动态规划是一种通过分解问题为子问题并利用子问题的解来解决原问题的算法设计方法。它通常用于解决具有 重叠子问题 和 最优子结构 性质的问题。 1. 动态规划的核心思想 1.1 重叠子问题 问题可以分解为多个子问…

QT 实现表格展示第一列为CheckBox(复选框)

1.界面实现效果 在Qt中,如果你想要在QTableView中实现复选框展示数据,示例:实现第一列为复选框(checkBox),需要自定义的QAbstractTableModel,重写data和setData方法来返回和设置复选框的状态,并且还需要重写flags方法来允许复选框被点击。 2.自定义CustomModel 需要实…

太速科技-232-基于FMC的2收2发TLK2711子卡

基于FMC的2收2发TLK2711子卡 一、板卡概述 TLK2711 是千兆位收发器&#xff0c;专用于超高速双向点对点数据传输系统。TLK2711与时钟芯片SI5338相结合支持1.6Gbps至2.5Gbps的有效串行接口速度&#xff0c;可提供高达 2Gbps的数据带宽。板卡包含2路TLK2711&#xff0c;实…