当前位置: 首页 > news >正文

【日志技术——Logback日志框架】

日志技术

1.引出

我们通常展示信息使用的是输出语句,但它有弊端,只能在控制台展示信息,不能灵活的指定日志输出的位置(文件,数据库),想加入或取消日志,需要修改源代码

2.日志技术

  • 可以将系统执行的信息,方便的记录到指定的位置(控制台、文件中、数据库中)
  • 可以随时以开关控制日志的启停,无需侵入到源代码中去进行修改
  • 用来记录程序运行过程中的各种信息,并可以进行永久存储

3.日志的体系和框架

(1)日志体系

  • 日志接口:设计日志框架的一套标准,日志框架需要实现这些接口

    Commons Logging(JCL)、Simple Logging Facade for Java(SLF4J)

    因为对Commons Logging接口不满意,搞了SLF4J

  • 日志框架:牛人或第三方公司已经做好的实现代码,后来者直接拿去使用

    JUL(java.util.logging)、Log4j、Logback

    因为对Log4j的性能不满意,搞了Logback

Logback是基于SLF4J接口的日志规范实现的框架

4.Logback日志框架

(1)要使用Logback日志框架,至少需要在项目中整合三个模块

  • logback-core:基础模块,是其他两个模块的依赖基础(必须有)
  • logback-classic:完整实现了slf4j API模块(必须有)
  • logback-access:与Tomact和Jetty等Servlet容器集成,以提供HTTP访问日志的功能

(2)快速入门

  • 需求:使用Logback日志框架,记录系统的运行信息

  • 实现步骤

    ①将jar包拖入项目的lib文件夹下,对着jar包右键,选择Add As Library

    ②在src下导入配置文件logback.xml(必须放在src下)

    ③获取日志对象LOGGER,调用Logger方法打日志即可

获取日志对象LOGGER: private static final Logger LOGGER = LoggerFactory.getLogger(“类名”);

调用方法打日志:

  • LOGGER.info(String info)
  • LOGGER.debug(String info)
  • LOGGER.error(String info)
public class Demo {//成员位置,获取日志对象private static final Logger LOGGER = LoggerFactory.getLogger("Demo");public static void main(String[] args) {     try {LOGGER.info("方法开始执行");chu(10, 2);LOGGER.info("方法执行成功");} catch (Exception e) {LOGGER.error("程序出现异常,执行失败");e.printStackTrace();}}public static void chu(int a, int b) {LOGGER.debug("参数a:" + a);LOGGER.debug("参数b:" + b);int c = a / b;LOGGER.debug("运算结果:" + c);}
}

(3)核心配置文件logback.xml

①对Logback日志框架进行控制

②通常可以设置两个输出日志的位置:一个是控制台,一个是系统文件中

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">//日志输出路径<file>C:/code/itcast-data.log</file>

③level:ALL为所有,OFF为关闭日志,还可以用来设置打印级别,大小写无关

<root level=ALL">    
<appender-ref ref="CONSOLE"/>   
<appender-ref ref="FILE" />
</root>

(4)日志级别

日志级别指的是日志信息的类型,日志都会分级别,优先级由低到高

日志说明
trace(低)追踪,指明程序运行轨迹,不常用
debug测试,实际应用中一般将其作为最低级别
info输出重要的运行信息,数据连接、网络连接、IO操作等,使用较多
warn警告信息,可能会发生问题,使用较多
error(高)发生了错误,可能已经被解决,不影响程序运行

只有日志级别大于或等于核心配置文件的日志级别时,才会被记录,否则不记录

相关文章:

【日志技术——Logback日志框架】

日志技术 1.引出 我们通常展示信息使用的是输出语句&#xff0c;但它有弊端&#xff0c;只能在控制台展示信息&#xff0c;不能灵活的指定日志输出的位置&#xff08;文件&#xff0c;数据库&#xff09;&#xff0c;想加入或取消日志&#xff0c;需要修改源代码 2.日志技术…...

mysql存储过程和函数

存储过程语法 设置变量&#xff1a; set dogNum 1002; 1、无参的存储过程 delimiter $ CREATE PROCEDURE 存储过程名() begin 存储过程体 end $; 2、有参数的存储过程 delimiter $ CREATE PROCEDURE 存储过程名(in|out|inout 参数名1 参数类型&#xff0c;参数名2 参数类型……...

【HDFS】Hadoop-RPC:客户端侧通过Client.Connection#sendRpcRequest方法发送RPC序列化数据

org.apache.hadoop.ipc.Client.Connection#sendRpcRequest: 这个方法是客户端侧向服务端发送RPC请求的地方。调用点是Client#call方法过来的。 此方法代码注释里描述了一个细节:这个向服务端发送RPC请求数据的过程并不是由Connection线程发送的,而是其他的线程(sendParams…...

Java基于 SpringBoot 的车辆充电桩系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1、效果演示效果图技术栈 2、 前言介绍&#xff08;完整源码请私聊&#xff09;3、主要技术3.4.1 …...

excel表导出

dto:查询条件所在的类 GetMapping(value "/downloadProject")ApiOperation("导出台账数据")AnonymousAccesspublic void queryDownload(Dto dto, HttpServletResponse response) throws IOException, ParseException {service.queryDownload(byPageDto, re…...

YOLOv8 快速入门

前言 本文是 YOLOv8 入门指南&#xff08;大佬请绕过&#xff09;&#xff0c;将会详细讲解安装&#xff0c;配置&#xff0c;训练&#xff0c;验证&#xff0c;预测等过程 YOLOv8 官网&#xff1a;ultralytics/ultralytics: NEW - YOLOv8 &#x1f680; in PyTorch > ONN…...

HJ48 从单向链表中删除指定值的节点

Powered by:NEFU AB-IN Link 文章目录 HJ48 从单向链表中删除指定值的节点题意思路代码 HJ48 从单向链表中删除指定值的节点 题意 输入一个单向链表和一个节点的值&#xff0c;从单向链表中删除等于该值的节点&#xff0c;删除后如果链表中无节点则返回空指针。 思路 单向链表…...

Java缓存理解

CPU占用&#xff1a;如果你有某些应用需要消耗大量的cpu去计算&#xff0c;比如正则表达式&#xff0c;如果你使用正则表达式比较频繁&#xff0c;而其又占用了很多CPU的话&#xff0c;那你就应该使用缓存将正则表达式的结果给缓存下来。 数据库IO性能&#xff1a;如果发现有大…...

MHA高可用及故障切换

一、什么是 MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过程中最大…...

1000元订金?华为折叠屏手机MateX5今日开始预订,售价尚未公布

华为最新款折叠屏手机Mate X5今日在华为商城开始预订&#xff0c;吸引了众多消费者的关注。预订时需交纳1000元的订金&#xff0c;而具体售价尚未公布。据华为商城配置表显示&#xff0c;Mate X5预计将搭载Mate 60系列同款麒麟9000S处理器&#xff0c;或可能搭载麒麟9100处理器…...

Golang编写客户端SDK,并开源发布包到GitHub,供其他项目import使用

目录 编写客户端SDK&#xff0c;并开源发布包到GitHub1. 创建 GitHub 仓库2. 构建项目&#xff0c;编写代码Go 代码示例&#xff1a;项目目录结构展示&#xff1a; 3. 提交代码到 GitHub仓库4. 发布版本5. 现在其他人可以引用使用你的模块包了 编写客户端SDK&#xff0c;并开源…...

手写Mybatis:第10章-使用策略模式,调用参数处理器

文章目录 一、目标&#xff1a;参数处理器二、设计&#xff1a;参数处理器三、实现&#xff1a;参数处理器3.1 工程结构3.2 参数处理器关系图3.3 入参数校准3.4 参数策略处理器3.4.1 JDBC枚举类型修改3.4.2 类型处理器接口3.4.3 模板模式&#xff1a;类型处理器抽象基类3.4.4 类…...

pair 是 C++ 标准库中的一个模板类,用于存储两个对象的组合

pair 是 C 标准库中的一个模板类&#xff0c;用于存储两个对象的组合。它位于 <utility> 头文件中。 pair 类的定义如下&#xff1a; template <class T1, class T2> struct pair {T1 first;T2 second;pair();pair(const T1& x, const T2& y);template&l…...

More Effective C++学习笔记(5)

目录 条款25&#xff1a;将构造函数和非成员函数虚化条款26&#xff1a;限制某个类所能产生的对象数量条款27&#xff1a;要求&#xff08;或禁止&#xff09;对象产生于heap&#xff08;堆&#xff09;之中条款28&#xff1a;智能指针条款29&#xff1a;引用计数条款30&#x…...

SpringMVC之CRUD(直接让你迅速完成部署)

一、项目创建 首先创建一个基于maven的项目部署&#xff0c;如果有些插件没有的话可以参考mybatis入门Idea搭建 二、配置依赖导入 依赖导入 1、pom.xml 需要根据自己的文件来进行导入&#xff0c;并不是原本照着导入 <project xmlns"http://maven.apache.org/POM/4.0.0…...

Github Copilot连接不上服务器

现象 报错&#xff1a;[ERROR] [default] [2023-09-08T15:47:01.542Z] GitHub Copilot could not connect to server. Extension activation failed: “connect ETIMEDOUT 20.205.243.168:443” 原因 DNS解析api.github.com的地址到20.205.243.168&#xff0c;但实际上这个地…...

(数字图像处理MATLAB+Python)第十二章图像编码-第三、四节:有损编码和JPEG

文章目录 一&#xff1a;有损编码&#xff08;1&#xff09;预测编码A&#xff1a;概述B&#xff1a;DM编码C&#xff1a;最优预测器 &#xff08;2&#xff09;变换编码A&#xff1a;概述B&#xff1a;实现变换编码的主要问题 二&#xff1a;JPEG 一&#xff1a;有损编码 &am…...

基于SpringBoot + Vue的项目整合WebSocket的入门教程

1、WebSocket简介 WebSocket是一种网络通信协议&#xff0c;可以在单个TCP连接上进行全双工通信。它于2011年被IETF定为标准RFC 6455&#xff0c;并由RFC7936进行补充规范。在WebSocket API中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性…...

AI智能机器人的语音识别是如何实现的 ?

什么是智能语音识别系统&#xff1f;语音识别实际就是将人类说话的内容和意思转化为计算机可读的输入&#xff0c;例如按键、二进制编码或者字符序列等。与说话人的识别不同&#xff0c;后者主要是识别和确认发出语音的人并非其中所包含的内容。语音识别的目的就是让机器人听懂…...

RabbitMQ: 死信队列

一、在客户端创建方式 1.创建死信交换机 2.创建类生产者队列 3.创建死信队列 其实就是一个普通的队列&#xff0c;绑定号私信交换机&#xff0c;不给ttl&#xff0c;给上匹配的路由&#xff0c;等待交换机发送消息。 二、springboot实现创建类生产者队列 1.在消费者里的…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...