Log4j2-13-log4j2 asyncLogger 低延迟日志的异步日志记录器

log4j2 的 async logger

Log4j2 是一个 Java 日志框架,它提供了灵活的配置和高性能的日志记录功能。其中,async loggerLog4j2 中的一个特性,它允许在日志记录时使用异步方式,以提高性能。

1. 异步日志简介

在传统的同步日志系统中,当应用程序记录日志时,它会等待日志事件完全写入日志文件或其他目标后再继续执行。这可能会导致性能问题,特别是在高负载的生产环境中。

异步日志就是为了解决这个问题而设计的。异步日志系统允许应用程序在记录日志时继续执行,而不必等待日志事件完全写入。这样,应用程序的性能不会受到日志写入的影响。

2. Log4j2 的 Async Logger 特性

Log4j2 中,async logger 是通过使用异步日志 Appender 实现的。以下是一些关键特性:

2.1 配置 Async Logger

log4j2.xml 或其他配置文件中,可以配置一个异步 logger,例如:

<AsyncLogger name="com.example.MyClass" level="info" additivity="false">
    <AppenderRef ref="AsyncFile"/>
</AsyncLogger>

这里,AsyncFile 是一个异步文件 Appender 的引用。

3. 示例配置

下面是一个简单的 log4j2.xml 配置文件,演示了如何配置异步 logger:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <AsyncFile name="AsyncFile" fileName="logs/app.log" immediateFlush="false">
            <PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/>
        </AsyncFile>
    </Appenders>
    <Loggers>
        <AsyncLogger name="com.example.MyClass" level="info" additivity="false">
            <AppenderRef ref="AsyncFile"/>
        </AsyncLogger>
        <Root level="error">
            <AppenderRef ref="AsyncFile"/>
        </Root>
    </Loggers>
</Configuration>

这个配置文件中定义了一个异步文件 Appender,将日志写入 logs/app.log 文件。然后配置了一个异步 logger,将特定包下的日志级别为 info 的日志记录到异步文件中。

log4j2 async logger 优缺点

下面是一些主要的优缺点:

优点:

  1. 性能提升: 异步日志允许应用程序在记录日志时继续执行,而不必等待 I/O 操作完成。这可以显著提高应用程序的性能,特别是在高并发和高负载的情况下。

  2. 降低延迟: 异步日志的使用可以降低由于同步日志操作引起的延迟。应用程序不再被阻塞等待日志写入完成,从而提高了响应性。

  3. 并发处理: 异步日志系统使用后台线程来处理日志事件,允许并发处理多个事件。这有助于更有效地管理和处理大量日志事件。

  4. 配置灵活性: 异步 logger 具有灵活的配置选项,可以调整队列大小、事件丢弃策略等参数以适应不同的性能和可靠性需求。

缺点:

  1. 内存开销: 异步日志需要维护一个日志事件队列,这可能导致一些额外的内存开销。队列的大小和事件复杂性会影响内存使用情况。

  2. 配置复杂性: 对于初学者而言,配置异步 logger 可能会相对复杂。了解和调整异步队列、事件丢弃策略等参数需要一定的经验和了解。

  3. 日志丢失风险: 在极端的高负载情况下,异步日志系统可能会因为队列满或其他原因导致部分日志事件被丢弃。这可能会使一些日志消息无法被完全记录。

  4. 对于低负载应用不一定有益: 在低负载的情况下,异步日志可能会增加复杂性而带来较小的实际性能提升。因此,在一些轻量级的应用中,异步日志可能并不总是必要的。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux 下gdal库(python)

之前在windows下安装gdal&#xff0c;先要下安装包再安装。这次在linux上安装&#xff0c;试了一下pip install gdal&#xff0c;不可以。想着linux应该一样&#xff0c;结果一搜网上教程一堆&#xff0c;乱七八糟的。 搞了一个小时 最后发现一句话就可以&#xff01;&#xf…

路由备份聚合排错

目录 实验拓扑图 实验要求 实验排错 故障一 故障现象 故障分析 故障解决 故障二 故障现象 故障分析 故障解决 故障三 故障现象 故障分析 故障解决 故障四 故障现象 故障分析 故障解决 故障五 故障现象 故障分析 故障解决 实验拓扑图 实验要求 按照图示配…

我国个体工商户达1.24亿户,支撑近3亿人就业

官媒报道截至2023年底&#xff0c;全国登记在册个体工商户1.24亿户&#xff0c;占经营主体总量的67.4%&#xff0c;支撑近3亿人就业。 什么概念&#xff1f;我帮大家理解一下&#xff0c;2024年了&#xff0c;现在中国5个人里面就有一个人不用上班&#xff0c;而是自己当起了老…

【Cookie反爬虫】某采购网站动态Cookie加点选验证码校验分析与实战

文章目录 1. 写在前面2. 请求分析3. JS反混淆4. 深度分析 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感兴趣的朋…

鸿蒙ArkUI封装的单选组件

Radio是单选框组件&#xff0c;通常用于提供相应的用户交互选择项&#xff0c;同一组的Radio中只有一个可以被选中。 ArkUI创建一个单选框&#xff0c;其中value是单选框的名称&#xff0c;group是单选框的所属群组名称。checked属性可以设置单选框的状态&#xff0c;状态分别为…

python+uiautomator2+adb

uiautomator2 基于google uiautomator的安卓UI自动化框架&#xff0c;支持python编写测试脚本对设备进行自动化控制。原理是在设备上运行http服务器&#xff0c;将http接口封装成python库 uiautomator只能使用java语言&#xff0c;每次都要上传到设备上运行&#xff0c;uiauto…

Java中缓存介绍

一、什么是缓存 1、Cache是高速缓冲存储器 一种特殊的存储器子系统&#xff0c;其中复制了频繁使用的数据以利于快速访问 2、凡是位于速度相差较大的两种硬件/软件之间的&#xff0c;用于协调两者数据传输速度差异的结构&#xff0c;均可称之为 Cache 二、缓存的分类 1、基于…

nodejs下载介绍

前言 在我们开发项目的时候使用的是这种对应的前后端分离的形式&#xff0c;各个开发人员各司其职来完成整个项目的构建 但是实际开发的话前端也是分成了很多部分比如下图 那么我们就用到了对应的快捷生成一个前端项目的工具&#xff0c;nodejs携带的脚手架 下载步骤 大家可…

【Tomcat与网络8】从源码看Tomcat的层次结构

在前面我们介绍了如何通过源码来启动Tomcat&#xff0c;本文我们就来看一下Tomcat是如何一步步启动的&#xff0c;以及在启动过程中&#xff0c;不同的组件是如何加载的。 一般&#xff0c;我们可以通过 Tomcat 的 /bin 目录下的脚本 startup.sh 来启动 Tomcat&#xff0c;如果…

京东采销急眼,隔空喊话“针对”拼多多,焦虑之下为哪般?

农历新年将至&#xff0c;无论是线下各大商超还是线上电商平台&#xff0c;皆为年终大促而“忙的不亦乐乎”&#xff0c;尤其是近期发生的京东采销人员在直播间向拼多多喊话&#xff0c;“恳请拼多多停止屏蔽&#xff0c;恳请拼多多直接比价”&#xff0c;更是将年底这场朴实无…

CPN故障诊断(MATLAB)

CPN(Colored Petri Net,彩色Petri网)是在传统Petri网的基础上进行扩展的高级Petri网。它在故障诊断领域有着广泛的应用。 CPN故障诊断的主要思想和步骤如下: 建模:根据系统的结构和功能,采用CPN构建系统的模型。将系统不同组件表示为网的位置,数据/信号流表示为网的转换,故障…

【百度Apollo】轨迹绘制:探索路径规划和可视化技术的应用

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…

中移(苏州)软件技术有限公司面试问题与解答(5)—— Linux进程调度参数调优是如何通过代码实际完成的1

接前一篇文章&#xff1a;中移&#xff08;苏州&#xff09;软件技术有限公司面试问题与解答&#xff08;0&#xff09;—— 面试感悟与问题记录 本文对于中移&#xff08;苏州&#xff09;软件技术有限公司面试问题中的“&#xff08;11&#xff09;Linux进程调度参数调优是如…

面向对象编程(高级)(上)

下篇链接见&#xff1a;面向对象编程&#xff08;高级&#xff09;(下&#xff09; 文章目录 一. 关键字&#xff1a;static1.1 类属性、类方法的设计思想1.2 static关键字1.3 静态变量1.3.1 语法格式1.3.2 静态变量的特点1.3.3 举例1.3.4 内存解析 1.4 静态方法1.4.1 语法格式…

1 月 30 日算法练习-思维和贪心

文章目录 重复字符串翻硬币乘积最大 重复字符串 思路&#xff1a;判断是否能整除&#xff0c;如果不能整除直接退出&#xff0c;能整除每次从每组对应位置中找出出现最多的字母将其他值修改为它&#xff0c;所有修改次数即为答案。 #include<iostream> using namespace …

AI新工具(20240126) 夸克 AI PPT-夸克 AI PPT,一键自动生成PPT;GeminiPro Next Web-一键免费部署

夸克 AI PPT-夸克 AI PPT,一键自动生成PPT 夸克AI PPT是夸克App推出的全新产品&#xff0c;用户只需输入PPT主题&#xff0c;就能在几十秒内生成一份精美且专业的PPT文档。夸克AI PPT具有更智能、更专业、更易操作的特点&#xff0c;让用户在手机端完成PPT创作&#xff0c;并提…

【C/C++】C/C++编程——整型(一)

整型 C 中的整型是基本的数据类型之一&#xff0c;用于表示没有小数部分的数。这包括正整数、负整数以及零。C 提供了多种整型&#xff0c;以适应不同大小的数值需求和优化内存使用。 整型的种类 C 中的整型可以根据其大小&#xff08;即占用的字节数&#xff09;和能够表示…

蓝桥杯2024/1/31----第十届省赛题笔记

题目要求&#xff1a; 1、 基本要求 1.1 使用大赛组委会提供的国信长天单片机竞赛实训平台&#xff0c;完成本试题的程序设计 与调试。 1.2 选手在程序设计与调试过程中&#xff0c;可参考组委会提供的“资源数据包”。 1.3 请注意&#xff1a; 程序编写、调试完成后选手…

RocksDB是如何实现存算分离的

核心参考文献&#xff1a; Dong, S., P, S. S., Pan, S., Ananthabhotla, A., Ekambaram, D., Sharma, A., Dayal, S., Parikh, N. V., Jin, Y., Kim, A., Patil, S., Zhuang, J., Dunster, S., Mahajan, A., Chelluri, A., Datye, C., Santana, L. V., Garg, N., & Gawde,…

Flink CEP实现10秒内连续登录失败用户分析

1、什么是CEP&#xff1f; Flink CEP即 Flink Complex Event Processing&#xff0c;是基于DataStream流式数据提供的一套复杂事件处理编程模型。你可以把他理解为基于无界流的一套正则匹配模型&#xff0c;即对于无界流中的各种数据(称为事件)&#xff0c;提供一种组合匹配的…