`
san_yun
  • 浏览: 2662899 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

log4j2 源码分析

 
阅读更多

1.初始化 Logger logger = LogManager.getLogger(MyTest.class);

org.apache.logging.log4j.LogManager.getLogger()

LoggerContext.start()

LoggerContext.reconfigure()

LoggerContext.setConfiguration()

org.apache.logging.log4j.core.config.BaseConfiguration.start()

org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(final Node node, final LogEvent event)

org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(final PluginType<T> type, final Node node, final LogEvent event)

RandomAccessFileAppender.createAppender()

 

2.执行 logger.info("test");

 

1. org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(final LogEvent event) //Actual writing occurs here.

2. org.apache.logging.log4j.core.layout.AbstractStringLayout.toByteArray(final LogEvent event)

3. org.apache.logging.log4j.core.appender.OutputStreamManager.write(final byte[] bytes)

4. org.apache.logging.log4j.core.appender.RandomAccessFileManager.write(final byte[] bytes, int offset, int length)

 

protected synchronized void write(final byte[] bytes, int offset, int length) {

    super.write(bytes, offset, length); // writes to dummy output stream

 

    int chunk = 0;

    do {

        if (length > buffer.remaining()) {

            flush();

        }

        chunk = Math.min(length, buffer.remaining());

        buffer.put(bytes, offset, chunk);

        offset += chunk;

        length -= chunk;

    } while (length > 0);

 

    if (isImmediateFlush || isEndOfBatch.get() == Boolean.TRUE) {

        flush();

    }

}

分享到:
评论

相关推荐

    log4j 1.2.15 源码

    log4j 1.2.15是该系列的一个稳定版本,虽然现在已有更新的log4j 2.x版本,但1.2.x系列仍然被许多遗留系统所采用。 二、核心组件 1. **Logger**: log4j的核心类,负责接收日志信息并决定如何处理。Logger通过继承...

    Log4j2效率测试源码

    - **配置文件**:测试源码中可能包含`log4j2.xml`或`log4j2.json`等配置文件,这些文件定义了日志的输出级别、布局格式、Appender(输出目的地)等。 - **Logger类的使用**:在代码中,会看到如何使用`org.apache....

    log4j 源码包 日志包 2.11.0

    《深入解析Log4j 2.11.0源码》 Log4j,作为Java领域最常用的日志框架之一,其2.11.0版本的发布为开发者提供了更加强大、高效和灵活的日志处理能力。源码包的获取,对于开发者深入理解其工作原理、定制化需求以及...

    Log4j2异步写日志效率测试源码

    本文主要探讨Log4j2异步写日志的效率,通过源码分析和测试来展示其优势。首先,我们要理解Log4j2中的异步日志工作原理。默认情况下,Log4j2使用同步模式记录日志,即每个日志事件都会阻塞直到写入完成。然而,通过...

    log4j学习源码教程

    本教程将通过源码分析,深入讲解log4j的工作原理和使用方法。 **1. log4j的基本概念** - **Logger**: 日志记录器,是log4j的核心接口,用于生成不同级别的日志事件。 - **Level**: 日志级别,包括DEBUG、INFO、...

    Log4j2、Fastjson、Log4j的BurpSuite插件亲测有效

    Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...

    mybatis源码+练习代码+插件+log4j2+maven

    【标题】"mybatis源码+练习代码+插件+log4j2+maven" 提供的资源包是一个综合的学习资料集合,旨在帮助用户深入理解MyBatis这一流行持久层框架,同时涵盖日志管理工具Log4j2和项目构建工具Maven。以下是这些组件的...

    Log4j2异步写日志源码

    在Java开发中,日志记录是一项至关重要的任务,它帮助我们追踪程序运行状态,定位问题。Log4j2是Apache提供的一款强大且灵活的日志框架,它的...通过以上分析,我们可以看到Log4j2在实现高效日志管理方面的强大能力。

    log4j-1.2.17含源码

    源码分析方面,我们可以关注几个关键类:`org.apache.log4j.Logger`是日志记录的主要接口,`org.apache.log4j.Category`(Logger的实现)负责实际的日志记录,`org.apache.log4j.Appender`接口定义了日志输出的基本...

    Log4j工程官方源码

    3. **在Eclipse中使用Log4j源码** - **导入源码**: 解压文件后,在Eclipse中选择“File” -&gt; “Import” -&gt; “Existing Projects into Workspace”,然后浏览到解压后的目录,导入项目。 - **编译与构建**: 确保...

    Log4j_1.2.15 源码

    Log4j是Apache组织开发的一款广泛使用的Java日志框架,版本1.2.15是其历史的一个稳定版本。这个源码包包含了Log4j的核心组件和相关配置,便于...对于Java开发者来说,理解并能灵活运用Log4j源码是一项重要的技能。

    log4j 1.2.8 jar 包含源码

    **Log4j 1.2.8 源码解析** Log4j 是一个广泛使用的 Java 日志框架,由 Apache 软件基金会开发。它为应用程序提供了灵活的日志记录功能,允许开发者调整日志级别,定制日志格式,以及将日志输出到不同的目的地,如...

    apache-log4j-1.2.17源码

    Apache Log4j是Java平台上的一个著名日志记录框架,其1.2.17版本是该框架的一个历史版本。...尽管Log4j后续有更先进的版本,如Log4j2,但对1.2.17版本的学习仍有助于理解日志处理的基本概念和技术。

    log4j-1.2.13-src

    总之,Log4j-1.2.13源码的分析不仅能够加深我们对日志处理的理解,还可以学习到优秀的设计模式和架构思想,是Java开发者的宝贵学习资源。在实际工作中,结合源码可以更好地定制和优化日志记录,提升软件的可维护性和...

    Strtus2.3升级2.5(包含log4j升级log4j2)所需jar,和相关资料

    5. **配置Log4j2**:Log4j2的配置文件(通常为log4j2.xml或log4j2.json)需要重新编写,以利用新特性并满足日志需求。例如,你可以配置日志分级(DEBUG, INFO, WARN, ERROR等),并实现日志分片以方便日志管理和分析...

    Log4j详解,详细讲解log4j的使用,和原理

    Log4j 详解 Log4j 是一款功能强大的日志记录工具,广泛应用于 Java 应用程序中。它可以帮助开发人员调试和分析程序,记录程序的运行情况,并提供了灵活的配置方式来控制日志的输出。 Log4j 的概念 Log4j 中有三个...

    Log4j2手册阅读随笔(Log4j2新特性)

    Log4j2是一款广泛使用的Java日志记录框架,它的出现是为了替代早期的Log4j,提供了更为高效、灵活...理解并熟练运用Log4j2的新特性,能够帮助开发者更好地监控、管理和分析应用日志,从而提升开发效率和应用的健壮性。

    Log4j2实现不同线程不同级别日志输出到不同的文件中

    Log4j2是一款广泛使用的Java日志记录框架,它提供了高度可配置的日志记录功能,能够帮助开发者在应用程序中方便地记录、管理和分析日志信息。在“Log4j2实现不同线程不同级别日志输出到不同的文件中”这个主题中,...

    log4j简单使用

    "源码"标签暗示我们将讨论Log4j的内部机制或如何查看和理解其代码,这对于学习和定制Log4j功能很有帮助。而"工具"标签则表明Log4j是一个开发者常用的工具,它的使用和配置是提高开发效率的关键。 **压缩包文件名称...

    Log4j将System.out搞到log4j中输出四

    在《Log4j将System.out搞到log4j中输出四》这篇博文中,作者可能详细讨论了这些步骤,并可能分享了一些实战经验。通过学习这篇博文,读者可以更深入地了解如何在实际项目中实现这一转换,提升日志管理的效率。 总结...

Global site tag (gtag.js) - Google Analytics