log4j-2.x 高性能配置(支持jdk6)

Log4j漏洞调研,源码浅解析 最近log4j的安全漏洞突然冒了出来,用了许久slf4j的我吓得赶紧翻遍了依赖,发现自己用的依赖并没有依赖上log4j-core,长吁一口气。吃了个午饭后转念一想我又没工作,也没啥线上项目在跑,何故担心这些问题?wc,那倒腾半天不就白整了,不行,反正这漏洞在java圈也挺大的,不如顺便研究一波,在未来应聘时也有聊的地方。 全文几乎都是站在巨人的肩膀上完成的,新人技术不佳,还望轻喷。 阅读详情

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <!-- Don't forget to set system property
-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
     to make all loggers asynchronous. -->
    <Appenders>
        <RollingRandomAccessFile name="RollingRandomAccessFile" fileName="C:/Users/win7/Downloads/log/app.log"
                                 filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="5 MB"/>
            </Policies>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="RollingRandomAccessFile"/>
        </Root>
    </Loggers>
</Configuration>


Java代码

通过添加 


-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector

或者设置System系统属性,以使用“disruptor”开启最高性能。

package test;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Main {
    private static final Logger LOGGER = LogManager.getLogger(Main.class);

    public static void main(String[] args) throws InterruptedException {
        Thread[] threads = new Thread[2];
        for (int i = 0; i < threads.length; i++) {
            threads[i] =
                    new Thread(new Runnable() {
                        public void run() {
                            for (int i = 0; i < 1000; i++) {
                                testLog();
                            }
                        }
                    });
        }
        long s = System.currentTimeMillis();
        for (int i = 0; i < threads.length; i++) {
            threads[i].start();
        }
        for (int i = 0; i < threads.length; i++) {
            threads[i].join();
        }
        long e = System.currentTimeMillis();
        System.out.println(e - s);
    }

    public static void testLog() {
        LOGGER.debug("debug!!!");
        LOGGER.info("info!!!");
        LOGGER.warn("warn!!!");
        LOGGER.error("error!!!");
        LOGGER.fatal("fatal!!!");
    }
}


依赖包(支持jdk6的jar)

disruptor-3.0.0.beta1.jar
log4j-api-2.3.jar

log4j-core-2.3.jar


兼容log4j 1.2

1.添加依赖包:log4j-1.2-api-2.3.jar

2.声明和log4j 1.2保持一致:

private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger.getLogger(Main.class.getName());

其他的和log4j2都是一样的(注意配置:AsyncLoggerContextSelector)。


Java日志框架Log4j 2详解 这是一篇Log4j 2的详解,感兴趣的可以观看 阅读详情

相关推荐

基于log4j2搭建系统的日志记录框架

log4j2搭建日志系统 jdbc

qq_50285932的博客 1756

log4j2和jdk版本不兼容问题

1、找不到类 原因是:jdk和log4j版本冲突,jdk是1.6,而log4j是2.13,而2.13以上只支持1.8。

mzjmmc的博客 8305

Java日志框架实战指南:从SLF4J、Log4j2到生产环境配置

日志是软件系统可观测性的基础组件,其核心价值在于记录程序运行状态、辅助问题排查与系统监控。在Java生态中,日志体系通常采用三层架构设计:日志门面(如SLF4J)提供统一API,日志实现(如Logback、Log4j2)负责具体输出,桥接器解决历史框架兼容问题。这种架构实现了业务代码与具体日志实现的解耦,提升了系统的可维护性。从技术原理层面,异步日志、无锁数据结构等优化手段能显著提升高并发场景下的性能表现,而合理的日志级别设计、滚动归档策略则是保障生产环境稳定运行的关键。在实际工程实践中,日志系统需要与监控

Hi, Sun 492

log4j 引发的安全震荡,jdk 7的使用者如何安然处之

2021年12月10日,产品经理找到我说,log4j 有重大安全隐患,云云: 慌得一批。还好,有临时应对手法,于是依样画葫芦,先改配置,重启系统,对付过去了。 到了昨天(12月14日)上午,准备彻底解决这个事项。于是上官网,下载当时最新的版本 2.15.0 的版本,更新到项目中。测试OK。于是正式发版。结果到了今天,测试反馈说,不行。使用新版本的jar 包,业务根本起不来,报错: 十二月 15, 2021 4:16:33 下午 org.apache.catalina.core.StandardC

Musicwind的专栏 4717

java Logback VS Log4j2:一倍性能差异,你还在犹豫吗?

Logback是由log4j的创始人Ceki Gülcü开发的,是log4j的继任者之一。Logback拥有更高的性能和灵活性,并且在Spring Boot等现代Java项目中被广泛使用。模块:Logback分为三个模块:logback-core、logback-classic和logback-access。特点:性能高、配置灵活、支持SLF4J。Log4j2是Log4j 1.x的升级版本,专为高性能和可扩展性而设计。它引入了许多新特性,如异步日志、性能优化、灵活的配置机制等。模块。

java专栏 1976

Spring Boot 3.x 系列【1】Spring Boot 3.0 版本新特性

本系列基于最新Spring Boot 3.0版本,由浅入深,从实战到源码分析,详细讲解各种Spring Boot 的使用技巧,适用于初学和进阶使用者。 因为是基于Spring Boot 3.0,所以会先讲解大家比较关注的3.0 新特性,初学者可以跳过前两篇相关内容。

记录知识、锤炼自我 6477

可观测性之Log4j2优雅日志打印

日志也是我们最常用的观测系统健康状况的方式,优雅的日志打印可以在排查问题的时候事半功倍,在Java日志组件中很多地方使用了日志实现自动扫描的扩展机制,如果随意引入不兼容的依赖包之后被扩展机制扫描到,就很容易出现日志不打印的问题,对于Java 日志依赖的引入,我们可以先了解其曲折的发展历史,了解其依赖来源,然后再针对性的配置依赖即可。

宋小生-中间件 2365

log4j各个版本

Log4j的jar 有1.2.6 1.2.8 1.2.12 1.2.15

高级11-Java日志管理:使用Log4j与SLF4J

本文系统介绍了Java日志管理的核心框架与最佳实践,重点解析了SLF4J日志门面和Log4j 2.x日志实现。主要内容包括:日志系统的重要价值,Java日志生态发展历程,SLF4J的门面模式优势及使用方法,Log4j 2.x的高性能特性和四大核心组件(Logger、Appender、Layout、Level),以及多种配置方式。通过代码示例展示了如何构建高效灵活的日志系统,包括占位符使用、日志级别控制和异常处理。文章为开发者提供了从基础到进阶的完整日志管理方案,帮助实现系统监控、调试和性能优化。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

阿里云天池大数据长期赛:金融风控-贷款违约预测(含代码)

本次比赛让自己在大数据的处理流程上有了更明确的认知,从数据清洗、特征工程、数据建模,每一个过程都能学到很多经验和知识,值得去历练。

weixin_46685991的博客 1万+

SLAM轨迹评估神器evo实战:从GPS到TUM格式的完整转换指南(附Python代码)

本文详细介绍了如何使用evo工具将GPS数据转换为TUM格式,以便进行SLAM轨迹评估。通过Python代码实现GPS到笛卡尔坐标的精确转换,并提供了完整的处理流程和实战案例,帮助开发者轻松完成从原始GPS数据到精确轨迹评估的全过程。特别适用于ORB-SLAM等视觉SLAM算法的性能验证。

weixin_29074295的博客 293

Spring Boot整合Log4j2实现高性能日志管理

日志系统是Java应用开发中的核心组件,直接影响系统可维护性和问题排查效率。Log4j2作为新一代日志框架,采用异步日志和LMAX Disruptor技术,在高并发场景下性能显著优于Logback。通过灵活的Appender配置和热更新机制,开发者可以实现日志分级存储、敏感信息脱敏等高级功能。在Spring Boot项目中集成Log4j2需要排除默认Logback依赖,并配置log4j2.xml文件定义日志格式、滚动策略和级别控制。合理的日志配置方案能提升40%以上的日志处理效率,特别适合中大型分布式系统。

weixin_29698641的博客 263

玩转RecyclerView | 实现子视图叠加 | 3D画廊效果 | 高级动效 | Android 3D坐标系介绍

之前写的一篇文章展示了RecyclerView实现的画廊效果,适用于专辑/图片/列表浏览效果。本篇文章阐述如何基于RecyclerView实现如下图所示的3D画廊效果。以下效果的重点在于实现子视图的图层叠加,滑动过程中的3D旋转效果较为简单。(1)无3D旋转效果图片(1)带3D旋转效果图片。

qq_38237224的博客 8155

Java日志框架性能对比:Log4j、Logback与Log4j2

日志框架是分布式系统和微服务架构中可观测性的重要组成部分,直接影响系统吞吐量和性能。Java生态中主流的日志框架包括Log4j、Logback和Log4j2,它们在异步模式、同步模式和极端场景下的表现差异显著。本文通过压测数据和源码解析,揭示各框架在吞吐量、延迟稳定性和资源占用等方面的优劣。Log4j2凭借无锁设计和零GC优化,在异步模式下吞吐量达到Logback的2.18倍,P99延迟稳定在个位数毫秒级。合理配置日志框架可显著提升系统性能,尤其在容器化环境中,优化后的Log4j2可降低30%的CPU使用率

weixin_29698641的博客 113

RK3568驱动XS9922B:AHD/CVBS双模摄像头兼容性实战

在嵌入式视频开发中,摄像头驱动的稳定性与兼容性往往决定项目交付质量。Linux内核的V4L2框架提供了统一的视频采集抽象,从v4l2_subdev子设备到media controller链路,再到用户态视频节点,每一层都需要精确配置。对于RK3568这类边缘计算平台,其MIPI CSI接口和自研ISP配合RKCIF,构成了完整的多路视频接入通路。当需要接入模拟视频解码芯片时,驱动设计就需同时考虑AHD高清协议与CVBS标清信号的模式切换、格式协商以及寄存器配置。XS9922B作为支持双模输入的解码芯片,可与

weixin_34216614的博客 346

计算机视觉三大顶会(ICCV/CVPR/ECCV)投稿指南与趋势解析

本文详细解析计算机视觉三大顶会(ICCV/CVPR/ECCV)的投稿指南与最新趋势。从基础认知到实战经验,涵盖时间线管理、选题策略、论文写作技巧及实验设计要点,帮助研究者提升投稿成功率。特别关注2024年技术融合、评估维度和伦理要求等前沿趋势,为计算机视觉领域的研究者提供实用建议。

weixin_29165725的博客 1836

Spring Boot整合log4j2日志系统的高性能实践

日志系统是Java应用开发中的关键组件,用于记录运行时状态和故障排查。log4j2作为Apache旗下的高性能日志框架,采用LMAX Disruptor环形队列实现异步日志处理,其吞吐量可达logback的10倍以上,特别适合高并发场景。通过合理的bufferSize配置和waitStrategy选择,能有效降低GC压力并提升系统稳定性。本文以Spring Boot 3.2 + log4j2 2.20.0为例,详解如何通过排除logback依赖、配置RollingFile策略和异步日志参数来构建生产级日志方

weixin_31856057的博客 222

华为硬件逻辑岗笔试题(一)

积少成多,集腋成裘,坚持!!! 目录 1. 进制转换 2. 状态机和编码方式 3. 存储器的分类 4. Verilog语法中的操作符 5. 对组合逻辑的认识 6. 对时序逻辑的认识 7. 竞争冒险的认识 8. 基本时序逻辑电路 9. 建立时间和保持时间 10. 同步时序电路 11. 组合逻辑和时序逻辑判断 13. 基本总线的理解 14.加法器 15.FPGA开发工具 1. 进制转换 1、十进制46.25对应的二进制表达式为( )。 A 101110.11...

qq_42235129的博客 1万+

Spring Boot 2.x项目从JDK 8升级至JDK 17实战指南

Java作为企业级应用开发的核心语言,其版本演进深刻影响着技术生态。从JDK 8到JDK 17,Java平台通过模块化系统、新垃圾收集器(如ZGC)和语言特性增强,实现了安全性、性能与开发体验的全面提升。这些底层改进为高并发微服务、云原生应用提供了更稳固的运行时基础。对于广泛使用的Spring Boot 2.x框架项目,升级至JDK 17不仅是获取官方长期支持、提升安全性的必要举措,更是迈向现代Java技术栈的关键一步。本文将聚焦于Spring Boot 2.3-2.7项目升级过程中的核心挑战,系统讲解如何

weixin_34211761的博客 472

TS808效果器制作教程

TS808效果器制作教程 可以在立创商城购买到大部分的电阻电容和IC,音频接口,踩钉,电位器和电源接口可以去某宝看看都买得到的。链接https//pan.baidu.com/s/1QId1eIE3fJ2u5NLBSISvGA。安装过程过于繁琐,把所有元器件按照图纸焊接完成就可以调试了,祝你们成功!这是TS808经典效果器制作过程的记录。IC是JRC4558。...

qq_18948149的博客 3426

BGP路由聚合:自动聚合和手动聚合

路由聚合是指将多条具体的路由合并为一条聚合路由,以减少路由表的条目数。这种技术通过只向对等体发送聚合后的路由,而不发送所有的具体路由,来减小路由表的规模。同时,被聚合的路由如果发生路由振荡,也不再对网络造成影响,从而提高了网络的稳定性。

网络技术联盟站 1220

Log4j日志框架:从基础配置到企业级应用实践

日志系统是软件开发中不可或缺的基础组件,用于记录程序运行状态和异常信息。Log4j作为Java生态中最经典的日志框架,通过Logger、Appender和Layout三大核心组件实现灵活的日志管理。其分级日志控制机制(DEBUG/INFO/WARN/ERROR等)允许开发者根据不同环境调整日志详细程度,而多样化的输出方式(控制台、文件、数据库等)满足不同场景需求。在分布式系统和微服务架构中,结合ELK等工具可以实现日志的集中收集与分析。本文以Log4j 1.x为例,详细讲解配置技巧、性能优化方案以及常见问题

weixin_33851177的博客 404

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Spring Boot 日志体系全面解析:从 SLF4J 到 Logback、Log4j2 与 Lombok 超详细!!

本文系统介绍了Java日志框架的核心概念与最佳实践。主要内容包括:日志的作用(开发调试、运行监控等)、日志体系分层(门面+实现)、SLF4J参数化日志的使用优势、Lombok的@Slf4j注解简化开发、Logback与Log4j2的特点与切换方式,以及生产环境下的日志配置建议(文件输出、滚动策略)和排查技巧。文章强调面向日志门面编程,推荐使用参数化日志提升性能,并提供了从开发到部署的完整日志解决方案。

m0_73884648的博客 1071

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

跨过slf4j和logback,直接晋级log4j 2

今年一直关注log4j 2,但至今还没有出正式版。等不及了,今天正式向大家介绍一下log4j的升级框架,log4j 2。 log4j,相信大家都熟悉,至今对java影响最大的logging系统,至今仍有很多系统在使用log4j,但毕竟这个版本出的太早,Java都从1.2到7.0了,log4j怎么总是在1.2的版本呢? 不得承认,写log4j的那个人确实很牛,之后又写了slf4j和logb...

weixin_30737433的博客 77

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Log4j 整合

整理一下笔记,查漏补缺,方便之后看以及重新复现。

王嘟嘟的博客 509

Spring Boot整合Log4j2日志配置:高性能异步日志实战

日志是服务运行状态的第一感知通道,但在高并发场景下,传统的同步日志写入方式容易成为接口性能的隐形瓶颈。Logback虽然由Spring Boot默认集成,却在大量日志输出时因锁竞争和IO阻塞拉高CPU占用与请求耗时。log4j2基于无锁队列的异步日志机制,将日志写入与业务线程解耦,大幅提升吞吐量并降低响应延迟。在网关、交易系统或日志量庞大的业务中,合理选择日志框架与配置策略显得尤为重要。本文面向Spring Boot开发者,系统讲解如何排除默认Logback依赖、引入log4j2异步日志、配置滚动策略与动态

weixin_34199764的博客 269
上一篇: log4j-1.2.17 高性能配置
下一篇: tomcat tomee 配置 数据源 (含 XA 数据源)
conquer0715
博客等级 码龄18年 73粉丝 147原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值