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

Log4J源码分析(四)

阅读更多
转载:http://jmut.bokee.com/

现在初始化进入到了最重要的阶段。我们先看看最常用的PropertyConfigurator,它从一个外部文件中读取配置。这个类最重要的方法当然是几个doConfigure方法。其中最复杂的是:

public
void doConfigure(Properties properties, LoggerRepository hierarchy)
它是接口Configurator中的方法。
1、由键log4j.debug设定内部debug信息是否输出;
2、由键log4j.thredsold设定全局level,它的value中可以使用变量,所以要进行变量替换,可以参见OptionConverter的
public
static
String findAndSubst(String key, Properties props)

public static
String substVars(String val, Properties props) throws
IllegalArgumentException
方法的说明。
3、由键log4j.rootLogger或log4j.rootCategory设置根配置。方法:
void parseCategory(Properties props, Logger logger, String optionKey,
String loggerName, String value)
处理设置语法:
log4j.rootLogger=[level], appenderName, appenderName, ...
root logger的level不能是inherited或null。方法:
Appender parseAppender(Properties props, String appenderName)
设置各个appender,它使用域
protected Hashtable registry = new Hashtable(11);
跟踪当前文件中的appender。在这个方法中使用了工具类PropertySetter。
4、由键log4j.loggerFactory配置LoggerFactory。同样使用了工具类PropertySetter。
5、由log4j.logger或log4j.category配置非根logger。
6、清空registry。
PropertySetter是一个重要的类,它通过JavaBean使用了reflection。它不设置appender的layout。
至此,初始化工作完成。整个初始化是围绕一个配置文件来做的,但中心是由这个文件得来的Properties对象,所以这个文件可以有多种形式,甚至可以是其它的载体,不必是文件,关键是能得到一个Properties对象。然后根据Properties对象中的信息生成、配置和组织logger。由于支持使用变量,所以在由key获取value时,要用到工具方法,实现变量的替换。现在生成和配置的问题已经解决,剩下的是logger的组织,它是在Hierarchy中解决的。

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

相关推荐

    log4j 源码包 日志包 2.11.0

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

    log4j 1.2.15 源码

    五、源码分析 在log4j 1.2.15源码中,我们可以深入研究这些核心组件的实现细节,例如Logger是如何根据配置文件进行初始化的,Appender是如何实现日志输出的,以及Level是如何影响日志过滤的。通过对这些关键部分的...

    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” -> “Import” -> “Existing Projects into Workspace”,然后浏览到解压后的目录,导入项目。 - **编译与构建**: 确保...

    Log4j_1.2.15 源码

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

    Log4j2效率测试源码

    本测试源码着重关注Log4j2的性能表现,这对于理解和优化日志系统的性能至关重要。Log4j2的设计目标是提供比其前一代Log4j更高的性能,并且具有更丰富的配置选项和更低的内存占用。 1. **Log4j2架构与性能优势** - ...

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

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

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

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

    log4j-1.2.13-src

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

    asp.net Log4j源码

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

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

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

    apache-log4j-1.2.17源码

    5. **源码分析** - `org.apache.log4j.Logger`类是所有日志记录的起点,它实现了日志记录的基本方法,如`debug()`, `info()`, `warn()`等。 - `org.apache.log4j.Category`是`Logger`的旧名称,两者在源码中是等价...

    log4j 1.2.8 jar 包含源码

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

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

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

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

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

    log4net源码

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

    Log4j2异步写日志源码

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

    log4j简单使用

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

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

    通过分析和学习Log4j的源代码,开发者可以更好地理解和利用这个强大的工具,解决在实际项目中遇到的日志问题,定制自己的日志解决方案,或者为开源社区贡献新的特性或修复已知问题。总之,熟悉并掌握Log4j的内部工作...

Global site tag (gtag.js) - Google Analytics