logback异步appender日志源码详解

背景:

日常打印日志时,使用logback的异步写日志几乎是标准的配置方式,本文从源码上看看异步写日志的整个流程

异步Appender日志

一般日志的配置如下所示
appender(“ASYNC-LOG”, AsyncAppender) {
neverBlock = true
queueSize = 10000
}
这样配置达到的效果有以下两点:
1.新来的是warn/error级别的日志,并且此时日志总数已经达到最大容量上限queueSize大小时,不会阻塞业务线程,而是选择丢弃日志,这样可以防止打印尖峰式打印日志时业务线程阻塞,不过会导致日志丢失
2.新来的是info/debug/trace级别的日志,当此时的日志总数已经达到最大容量上限queueSize的80%时,直接丢掉日志,也就是说对于这些低级别的日志,当达到最大阈值上限的80%时已经开始丢弃了
对着源码,我们来看一下这两个结论对应的代码段是什么:
1.初始化队列和丢弃阈值
在这里插入图片描述
2.日志消息插入
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【chrome 插件】AdGuard 广告拦截器:安全清爽的互联网浏览体验

AdGuard 广告拦截器介绍 基本信息 AdGuard 是一款功能强大的广告拦截程序,它可以帮助用户在浏览网页时过滤掉网站中烦人的广告和恶意弹窗,提升获取信息的效率,同时,作为一款 Chrome 插件,AdGuard 提供了简单易用的界…

除法求值00

题目链接 除法求值 题目描述 注意点 Ai, Bi, Cj, Dj 由小写英文字母与数字组成输入总是有效的,可以假设除法运算中不会出现除数为 0 的情况,且不存在任何矛盾的结果未在等式列表中出现的变量是未定义的,因此无法确定它们的答案 解答思路 …

Linux内核源码分析 (B.4) 深度剖析 Linux 伙伴系统的设计与实现

Linux内核源码分析 (B.4) 深度剖析 Linux 伙伴系统的设计与实现 文章目录 1\. 伙伴系统的核心数据结构2\. 到底什么是伙伴3\. 伙伴系统的内存分配原理4\. 伙伴系统的内存回收原理5\. 进入伙伴系统的前奏5.1 获取内存区域 zone 里指定的内存水位线5.2 检查 zone 中剩余内存容量…

HelpLook全新升级!定制AI问答机器人,企业内容中心焕新

一直以来,企业都在努力解决内外部“企业知识管理”问题:从纸质手册发放,转线上电子文档传阅(pdf/ppt/word等),再到整理客户常见问题(FAQ)和内部知识库(wiki),但始终没有找到一套完整方案将“企业知识”很好地集中管理及…

Flutter与Native通信原理剖析与实践

通信原理 我们分几种场景来介绍Flutter和Native之间的通信。 Native发送数据给FlutterFlutter发送数据给NativeFlutter发送数据给Native,然后Native回传数据给Flutter Flutter与Native通信机制 在讲解Flutter与Native之间是如何传递数据之前,我们先了…

PostgreSQL16源码包编译安装

一、安装环境 操作系统:CentOS Linux release 7.8.2003 (Core) PostgreSQL版本:16 服务器IP地址:192.168.0.244 Firewalld关闭、selinux关闭 笔者本次选用最新v16版本进行部署 二、pg数据库安装包下载 下载地址:https://www.po…

什么是IoT数字孪生?

数字孪生是资产或系统的实时虚拟模型,它使用来自连接的物联网传感器的数据来创建数字表示。数字孪生允许您从任何地方实时监控设备、资产或流程。数字孪生用于多种目的,例如分析性能、监控问题或在实施之前运行测试。从物联网数字孪生中获得的见解使用户…

操作系统备考学习 day3 (2.1.1 - 2.1.6)

操作系统备考学习 day3 二、进程与线程2.1 进程与线程2.1.1 进程的概念和特征2.1.2 进程的状态与转换2.1.3 进程的组织2.1.4 进程控制2.1.5 进程间通信(IPC)2.1.6 线程和多线程模型 二、进程与线程 2.1 进程与线程 2.1.1 进程的概念和特征 进程&#…

怎样获取某个文件的public方法个数

背景:idea 提供的list可以查看所有的构造方法,但是无法直接告诉我准确的数目,于是写了以下一个单独的类 import java.lang.reflect.Method; import java.lang.reflect.Modifier;public class MyPublicMethodCounter {public static void mai…

flink集群与资源@k8s源码分析-集群

0 介绍 本文是flink集群与资源@k8s源码分析系列的第二篇-集群 1 场景 下面详细分析各用例 2 启动k8s集群 k8s集群支持session和application模式,job模式将会被废弃,本文分析session模式集群 Configuration作为配置容器,几乎所有的构建需要从配置类获取配置项,这里不显示…

算法通关村第14关【黄金】| 数据流的中位数

思路:使用一个小根堆一个大根堆来找中位数 小根堆保存较大的一半数字,大根堆保存较小的一半数字 奇数queMin的队头即为中位数,偶数queMin和queMax队头相加/2为中位数 初始状态: queMin: [] queMax: [] 添加数字 1: …

java面试题基础第七天

一、java面试题第七天 1.throw和throws的区别? throw: 用于抛出一个异常对象throws:写在方法体上面,将方法体里面的异常,抛给上层 2. 通过故事讲清楚NIO 下面通过一个例子来讲解下。 假设某银行只有10个职员。该银…

stm32学习-芯片系列/选型

【03】STM32HAL库开发-初识STM32 | STM概念、芯片分类、命名规则、选型 | STM32原理图设计、看数据手册、最小系统的组成 、STM32IO分配_小浪宝宝的博客-CSDN博客  STM32:ST是意法半导体,M是MCU/MPU,32是32位。  ST累计推出了&#xff1a…

buuctf web [极客大挑战 2019]LoveSQL

又是这样的界面,这糟糕的熟悉感,依旧使用上题套路 用户名: admin or 11# 密码: 1 有一串很像flag的字符,但是很可惜,这不是flag 看了一眼源代码,没有可以跳转的页面 要换个思路了&#xff0c…

(二十九)大数据实战——kafka集群节点服役与退役案例实战

前言 本节内容是关于kafka集群节点的服役与退役,从而实现kafka集群的缩容与扩容。在开始本节内容之前,我们要预先安装好kafka集群,并准备一台空余的服务器用来完成我们扩容与缩容的案例。关于kafka集群的安装内容这里不在赘述,相…

Python Web 开发常见的100个问题.pdf

Python被广泛认为是一种容易学习和上手的编程语言,因此对于初学者和有经验的开发者都非常友好。这一特点使得Python成为了许多开发者入门Web开发的首选语言。 在Python Web开发中,开发者们通常会遇到各种各样的问题和挑战。现在我们为大家准备了学习路线…

PostgreSQL快速入门 与MySQL语法比较

开篇 本文可帮助具有MySQL基础的小伙伴对PostgreSQL做一个快速的入门,通过语法之间的差异对比,降低学习成本,同样都是数据库,正所谓触类旁通。 模式的概念 模式(Schema)表示数据库中的逻辑容器&#xff…

HTML 知识扫盲

写在前面 HTML 是一门超文本标记语言,不管你听没听说过 HTML,但在网上冲浪的途中你无时不刻都在与它接触,他遍布在每个你看得到的互联网的角落。其实对于笔者而言,我已经断断续续地学习过这门语言,经过时间的磋磨&…

docker学习1-基本概念

Docker jar包环境镜像,镜像存在docker仓库中,随用随取,无需现配环境 docker通过隔离机制,各个镜像之间互不干扰 docker比vm轻量化,每次只需运行镜像即可,镜像占内存小启动快,虚拟机启动慢&…

typeof的作用

typeof 是 JavaScript 中的一种运算符,用于获取给定值的数据类型。 它的作用是返回一个字符串,表示目标值的数据类型。通过使用 typeof 运算符,我们可以在运行时确定一个值的类型,从而进行相应的处理或逻辑判断。 常见的数据类型…