`
tanghongjun1985
  • 浏览: 56729 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Log4J源码分析(一)

阅读更多
面对这近20000行代码,188个类,还真是有点不知从何下手。万事开头难嘛!既然使用Log4J是从Category类开始的,那也从它开始分析。
  Category类位于org.apache.log4j包内,检查它的类层次图,它实现了AppenderAttachable接口。
  AppenderAttachable接口同样位于org.apache.log4j包内,查看它的源码,很明显,它可以被视为一个Appender的容器,所以Category类也可以当作是Appender的容器。
  但是,事情没这么简单,在Category类中有个私有域:
AppenderAttachableImpl aai
  AppenderAttachableImpl是什么?显然,从其名字可知,它是AppenderAttachable接口的一个实现。查看它的源码,它拥有一个私有域Vector appenderList,并在其上实现了AppenderAttachalbe接口。此外,AppenderAttachableImpl还添加了一个重要的方法:
/**
Call the doAppend method on all attached appenders. */
public
int appendLoopOnAppenders(LoggingEvent event) {
 int size = 0;
 Appender appender;

 if(appenderList != null) {
  size = appenderList.size();
  for(int i = 0; i < size; i++) {
   appender = (Appender) appenderList.elementAt(i);
   appender.doAppend(event);
  }
 }
 return size;
}
从这个方法的实现来看,它像是观察者(Observer)模式中的Notify方法。通过观察Appender的实现,可以肯定在这里使用了这模式,Appender做为AppenderAttachableImpl的观察者。

转载:http://jmut.bokee.com/
分享到:
评论

相关推荐

    log4j 源码包 日志包 2.11.0

    通过对Log4j 2.11.0源码的深入研究,开发者不仅可以掌握其基本用法,还能了解其背后的实现机制,从而更好地利用这一强大的工具,提升开发效率,优化系统性能。同时,源码学习也是提升编程技能的重要途径,能帮助...

    log4j 1.2.15 源码

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

    log4j学习源码教程

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

    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源码是一项重要的技能。

    Log4j2效率测试源码

    - **性能测试类**:测试源码通常包括一个或多个测试类,这些类模拟了大量日志记录,以测量不同场景下Log4j2的性能。 3. **测试指标** - **吞吐量**:测试源码可能会计算在一定时间内能够处理的日志条数,以评估...

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

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

    asp.net Log4j源码

    在ASP.NET中实现Log4j源码,通常涉及到以下几个关键知识点: 1. 日志级别:Log4j支持多个日志级别,如DEBUG、INFO、WARN、ERROR和FATAL。开发者可以根据不同的情况选择合适级别的日志,以便在需要时过滤不重要的...

    log4j-1.2.13-src

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

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

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

    apache-log4j-1.2.17源码

    Apache Log4j是Java平台上的一个著名日志记录框架,其1.2.17版本是该框架的一个历史版本。Log4j为开发者提供了一种灵活、高效且可扩展的日志记录解决方案,使得应用程序的调试、监控和问题排查变得更加简单。在深入...

    log4j 1.2.8 jar 包含源码

    1.2.8 版本是 Log4j 的一个较早版本,但其源码仍然具有很高的学习价值,尤其对于理解日志系统的设计原理和实现细节。 **1. 日志级别** 在 Log4j 中,日志级别定义了日志事件的重要性,包括 `DEBUG`、`INFO`、`WARN...

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

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

    log4j源码二次开发-集中处理日志消息

    总的来说,通过`log4j`源码的二次开发和`DatagramSocket`的使用,我们可以构建一个高效、可扩展的日志管理系统,实现对多应用、多模块日志的集中处理和有序管理,便于故障排查和数据分析。这种方案尤其适用于分布式...

    log4net源码

    **log4net源码分析** `log4net`是一款广泛使用的日志记录框架,它源自Java平台上的log4j,并被移植到了.NET环境中。这款开源库提供了强大的日志记录功能,支持多种输出方式,如控制台、文件、数据库等,且具有可...

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

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

    Log4j2异步写日志源码

    Log4j2是Apache提供的一款强大且灵活的日志框架,它的出现替代了早期的Log4j,提供了更高的性能和更丰富的功能。本文将深入探讨如何在Log4j2中实现异步写日志,并通过提供的文件`TestController.java`、`log4j2.xml`...

    apache-log4j-1.2.16.rar_apache log4j 1.2.16_log4j source code_lo

    Apache Log4j是Java平台上的一个著名日志记录框架,广泛应用于各种Java应用程序中,包括服务器、Web应用、企业级软件等。Log4j 1.2.16是该框架的一个版本,提供了丰富的日志功能,允许开发者灵活地控制日志信息的...

    log4j简单使用

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

Global site tag (gtag.js) - Google Analytics