Java日志框架概览

news2024/10/7 4:27:56

 

SLF4J

  • 提供统一的日志门面API,即图中紫色部分,实现中立的日志记录API

  • 桥接功能,蓝色部分,把各种日志框架API(绿色部分)桥接到SLF4J API。这样即便你的程序中使用各种日志API记录日志,最终都可桥接到SLF4J门面API。

  • 适配功能,红色部分,可实现SLF4J API和实际日志框架(灰色部分)绑定。 SLF4J只是日志标准,还是需要实际日志框架。日志框架本身未实现SLF4J API,所以需前置转换。Logback就是按SLF4J API标准实现,所以才无需绑定模块做转换。

虽然可用log4j-over-slf4j实现Log4j桥接到SLF4J,也可使用slf4j-log4j12实现SLF4J适配到Log4j,也把它们画到了一列,但是它不能同时使用它们,否则就会产生死循环。jcl和jul同理。

虽然图中有4个灰色的日志实现框架,但日常业务使用最多的还是Logback和Log4j,都是同一人开发的。Logback可认为是Log4j改进版,更推荐使用,基本已是主流。

Spring Boot的日志框架也是Logback。那为什么我们没有手动引入Logback包,就可直接使用Logback?

spring-boot-starter模块依赖spring-boot-starter-logging模块 spring-boot-starter-logging模块自动引入logback-classic(包含SLF4J和Logback日志框架)和SLF4J的一些适配器。其中,log4j-to-slf4j用于实现Log4j2 API到SLF4J的桥接,jul-to-slf4j则是实现java.util.logging API到SLF4J的桥接。

logback异步日志配置

<appender name="DEFAULT-APPENDER-ASYNC" class="ch.qos.logback.classic.AsyncAppender">
   <includeCallerData>false</includeCallerData>
   <queueSize>512</queueSize>
   <neverBlock>true</neverBlock>
   <appender-ref ref="DEFAULT-APPENDER" />
</appender>
  • includeCallerData 默认false:方法行号、方法名等信息不显示

  • queueSize 控制阻塞队列大小,使用的ArrayBlockingQueue阻塞队列,默认容量256:内存中最多保存256条日志

  • discardingThreshold 丢弃日志的阈值,为防止队列满后发生阻塞。默认队列剩余容量 < 队列长度的20%,就会丢弃TRACE、DEBUG和INFO级日志

  • neverBlock 控制队列满时,加入的数据是否直接丢弃,不会阻塞等待,默认是false

    • 队列满时:offer不阻塞,而put会阻塞

    • neverBlock为true时,使用offer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/916225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

伊斯特曼E1D和VEAZEN费森S88这两款全单吉他怎么样?优缺点综合对比评测,哪一款更出众?

3000-4000元价位预算有什么适合初学或者进阶换琴的吉他品牌推荐&#xff1f;VEAZEN费森S88系列和Eastman伊斯特曼E1D系列一直也是深受初学者和进阶者喜欢的热销全单吉他型号&#xff0c;那么&#xff0c;今天就以它们为本期的评测主角&#xff0c;从五个方面深度剖析介绍和对比…

计算机网络第3章(数据链路层)

计算机网络第3章&#xff08;数据链路层&#xff09; 3.1 数据链路层概述3.1.1 概述3.1.2 数据链路层使用的信道3.1.3 三个重要问题 3.2 封装成帧3.2.1 介绍3.2.2 透明传输3.2.3 总结 3.3 差错检测3.3.1 介绍3.3.2 奇偶校验3.3.3 循环冗余校验CRC(Cyclic Redundancy Check)3.3.…

EasyExcel+POI制作带有有效性校验及下拉联动的Excel模板

文章目录 1.背景2.实现功能的Excel特性2.1.特性介绍2.2.下拉框联动2.3.单元格自动匹配Id2.4.错误提示 3.代码实现3.1.基础流程代码3.2.名称管理器配置3.3.有效性配置3.4.函数填充3.5.其他补充 4.总结 1.背景 最近在做一个CRM系统的人员销售目标导入的相关需求&#xff0c;需要…

壁仞科技与百度飞桨完成II级兼容性测试

近日&#xff0c;壁仞科技BR104通用GPU与百度飞桨已完成II级兼容性测试。测试结果显示&#xff0c;双方兼容性表现良好&#xff0c;整体运行稳定。这是壁仞科技加入飞桨“硬件生态共创计划”后的阶段性成果。产品兼容性证明本次II级兼容性测试完成了涵盖自然语言处理、计算机视…

FFmpeg解码32k大分辨率出现如下错误:Picture size 32768x32768 is invalid

最近找到一张32k的jpeg图片&#xff0c;尝试用ffmpeg来进行解码&#xff0c;命令如下&#xff1a; ffmpeg -i enflame_32768-32768-420.jpg 32.yuv结果出现Picture size 32768x32768 is invalid的错误&#xff1a;

【C++】用Windows API在控制台实现选择选项

2023年8月23日&#xff0c;周三上午 今天上午花了一个小时来实现这个 这个程序在碰到边界时会发出声音&#xff0c; 通过调用Windows API的Beep函数来实现。 #include<Windows.h> #include<conio.h> #include<iostream> #include<cstdlib>const int …

生信豆芽菜-EMT评分的计算

网址&#xff1a;http://www.sxdyc.com/gradeEmt 1、数据准备 表达谱数据&#xff0c;行为基因&#xff0c;列为样本 2、提交后&#xff0c;等待运行成功即可下载 当然&#xff0c;如果不清楚数据是什么样的&#xff0c;可以选择下载我们的示例数据&#xff0c;也可以关注…

统计分析查找总人数、男、女的人数

SELECTcount( * ) AS count,sum( CASE WHEN MOD ( substr( remark, 17, 1 ), 2 ) 0 THEN 1 ELSE 0 END ) AS women,sum( CASE WHEN MOD ( substr( remark, 17, 1 ), 2 ) 1 THEN 1 ELSE 0 END ) AS man FROMt_user

CH583/2构建工程教程

CH583/2构建工程教程 绪论资源移植步骤准备移植步骤一步骤二 工程配置修改工程名修改前修改后 工程配置修改资源文件 修改C/C general修改C/C构建修改汇编交叉编译修改C交叉编译修改GNU RISC-V Cross Linker 修改跟编译 移植注意事项 绪论 资源 CH583/2的SDK下载 移植步骤 …

2025款EQC路测照曝光:外观更紧凑,动力更强,与宝马iX3正面竞争

据国外汽车媒体Auto Express近日发布的报道&#xff0c;梅赛德斯的EQC Mk2纯电动汽车在进行路测时被拍下了照片。 EQC车型相比于EQA和EQB更为紧凑&#xff0c;而与EQE和EQS相比则更为宽敞&#xff0c;这使得该车型在市场推出后与宝马iX 3和奥迪即将推出的Q6 E-tron进行了正面竞…

数据结构——队列(C语言)

需求&#xff1a;无 本篇文章将解决一下几个问题&#xff1a; 队列是什么&#xff1f;如何实现一个队列&#xff1f;什么场景下会用队列&#xff1f; 队列的概念&#xff1a; 队列&#xff1a;一种只允许一端进行插入数据操作&#xff0c;在另一端进行删除操作的特殊线性表。…

AI大模型算力的估计方法

估计大型模型所需的算力是一个复杂的过程&#xff0c;涉及许多因素&#xff0c;如模型的大小、训练数据量、训练批次大小、训练轮数等。以下是一些常见的方法和指导来估计大型模型所需的算力&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外…

java-线程相关知识二

1. 线程基本方法 线程相关的基本方法有 wait&#xff0c;notify&#xff0c;notifyAll&#xff0c;sleep&#xff0c;join&#xff0c;yield 等。 1.1. 线程等待&#xff08;wait&#xff09; 调用该方法的线程进入 WAITING 状态&#xff0c;只有等待另外线程的通知或被中断…

IDEA配置文件乱码

一、问题描述 导入项目后&#xff0c;发现配置文件乱码了&#xff0c;但是程序运行还能正常使用。 不过&#xff0c;配置文件乱码&#xff0c;对代码开发还是很有阻碍。还是需要去解决。 二、解决方案 在Idea中设置默认编码方式&#xff0c;可以保证新建的文件使用正确的编码…

制图成本降低80%,百度如何打造轻地图?

作者|HiEV 编辑|张祥威 编者注&#xff1a; 本文是HiEV出品的系列直播「智驾地图之变」第一期问答环节内容整理。百度智驾地图业务部主任架构师万聪与连线嘉宾鉴智机器人技术副总裁潘屹峰、领骏科技研发副总裁严晗、主持嘉宾周琳展开深度交流&#xff0c;并进行了答疑。 本期…

安装docker服务,配置镜像加速器

文章目录 1.安装docker服务&#xff0c;配置镜像加速器2.下载系统镜像&#xff08;Ubuntu、 centos&#xff09;3.基于下载的镜像创建两个容器 &#xff08;容器名一个为自己名字全拼&#xff0c;一个为首名字字母&#xff09;4.容器的启动、 停止及重启操作5.怎么查看正在运行…

亿邦智库《2023数字化采购发展报告》解读,企企通推动企业采购数字化及供应链协同智能化发展

采购成本是企业成本控制的主体和核心。在当前供应链的背景下&#xff0c;采购数字化一方面可以通过提高效率来降低成本&#xff0c;增强合作和风险缓解能力&#xff1b;另一方面&#xff0c;信息、物流和资本流动的整合和重建将提高供应链的灵活性和灵活性&#xff0c;增强面向…

Spring Framework核心模块

core Spring Core是Spring框架的基础API核心模块&#xff0c;提供了基本的IoC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;和DI&#xff08;Dependency Injection&#xff0c;依赖注入&#xff09;功能。 core核心功能举例 资源管理-系统资源加载 Fi…

Qwen-7B微调实例

Qwen-SFT 阿里通义千问(Qwen-7B-Chat/Qwen-7B), 微调/LORA/推理 踩坑 1. tokenizer.encode输出(不会新增特殊字符), 为 [真实文本tokens]: 2. chat-PROMPT: <|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n你好<|im…

vue3移动h5调试插件

下载插件 pnpm i vconsole代码部分 main.ts中加入如下代码 import VConsole from vconsole;const isPc () > {const userAgentInfo navigator.userAgent;const Agents ["Android", "iPhone","SymbianOS", "Windows Phone",&q…