`
mabusyao
  • 浏览: 253311 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Log4j 代码学习 - Factory

 
阅读更多

我们最早提到,Log4j的初始代码在LogManager的静态块中。里面包含了许多初始化工作的代码,我们来看一下:

 

static {
    Hierarchy h = new Hierarchy(new RootLogger(Level.DEBUG));
    repositorySelector = new DefaultRepositorySelector(h);
    ...
    OptionConverter.selectAndConfigure(url, configuratorClassName,
					   LogManager.getLoggerRepository());
} 

Log4j首先创建了一个RootLogger,在第一篇里面我们已经知道RootLogger是Logger的子类。同时,它也是其他所有我们定制的Logger的父亲。

 

Hierarchy继承于LoggerRepository接口,我们可以理解为这是一个Logger的仓库,当Factory生产出Logger后,便会存储在Repository里, 再通过RepositorySelector去选取。


我其实没看出这么复杂的设计是为了什么,相信Log4j这么设计一定是有什么目的,或者为了将来扩展?

  • 大小: 28 KB
分享到:
评论

相关推荐

    hibernate3.3.1接口实现包 slf4j-log4j12-1.5.2

    <property name="hibernate.logging.factory_class">org.hibernate.util.Log4jHelper$Log4jLoggerFactory ``` 这样,Hibernate的日志就会通过SLF4J-Log4j12进行输出,便于调试和问题排查。 **应用场景与优势** ...

    Spring项目中怎么配置log4j

    这使得Spring在启动时会自动加载`log4j.properties`,而无需在Java代码中进行任何特殊处理。 最后,为了使Spring与log4j集成,我们需要在`web.xml`(对于Web应用)或`context.xml`(对于非Web应用)中引入log4j的...

    log4j与spring的详细配置。

    <bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="staticMethod" value="org.apache.log4j.LogManager.getLoggerRepository"/> ...

    spring log4j 实例

    Spring框架是Java领域广泛使用的轻量级框架,而Log4j则是日志记录领域的经典工具,提供了丰富的日志配置和管理功能。本实例结合Spring和Log4j,将为你提供一个实用的日志解决方案。 首先,我们要理解Spring是如何...

    Log4j写入数据库详解

    log4j.logger.org.springframework.beans.factory.xml=INFO log4j.logger.com.neam.stum.user=INFO ``` **步骤四:获取用户信息** 为了在日志中包含用户信息,可以通过Log4j的MDC(Mapped Diagnostic Context)来...

    spring整合log4j

    这个"spring整合log4j"的示例项目`log4j_spring_test`很可能包含了上述所有步骤的实现,初学者可以通过阅读源代码和运行测试来加深理解。通过这种方式,开发者可以在Spring应用程序中轻松地管理和控制日志,便于调试...

    maven-spring-mybatis小型项目开发环境(3)log4j集成

    这个依赖项会将Log4j库引入到项目中,使得我们可以在代码中使用Log4j的相关类和方法。 接下来,我们需要配置Log4j。在`src`目录下,创建一个名为`log4j.properties`或`log4j.xml`的配置文件,这个文件会定义日志的...

    Spring-LOG.rar_log4j

    通过学习Spring和Log4j的集成,你可以更好地理解如何在实际项目中处理日志,这对于排查问题、调试代码以及监控系统状态都极其重要。此外,熟悉这些基础工具的使用也有助于你逐渐掌握更复杂的日志管理系统,比如SLF4J...

    SpringDM笔记6-Fragment及配置Log4j Fragment Bundle

    4. **加载Log4j配置**:在Host Bundle的启动代码中,或者通过OSGi服务,我们可以确保在启动时加载Fragment Bundle中的Log4j配置。这可能需要一些自定义代码来实现,因为OSGi默认不自动加载Fragment Bundle的资源。 ...

    开源项目-titpetric-factory.zip

    了解如何整合日志框架(如Logback或Log4j)和监控工具(如Prometheus或ELK Stack)可以帮助我们提升生产环境下的应用管理能力。 8. **社区参与与协作** 开源项目鼓励社区参与,这包括代码贡献、问题讨论和文档改进...

    spring2在web下对log4j的增强

    这个项目可能包含了Spring的配置文件、Log4j的配置文件以及相关的Java代码,用于演示上述的日志管理策略。 总之,通过Spring框架,我们可以更有效地管理和控制Web应用中的日志,包括动态配置、AOP日志拦截等,从而...

    第四十六期 《Log4j2 高风险漏洞的来龙去脉》1

    然而,2021年,Log4j2 出现了两个高风险的安全漏洞,即 CVE-2021-44228 和 CVE-2021-45046,这两个漏洞可能导致远程代码执行(RCE)和拒绝服务(DOS)攻击。 **CVE-2021-44228 漏洞详解:** 这个漏洞主要存在于 Log...

    slf4j-1.5.8.rar Hibernate日志接口

    SLF4J(Simple Logging Facade for Java)是Java中一个重要的日志抽象层,它为各种日志框架,如Log4j、java.util.logging、Logback等提供了一个统一的API,使得开发者可以在运行时选择具体使用的日志实现。...

    开发框架搭建

    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` #### 10. 测试运行 最后一步是测试整个应用程序的功能。...

    Spring+commons.log

    Commons Logging允许开发者在运行时选择或切换日志实现,例如log4j、java.util.logging或者SimpleLog等,增强了日志处理的灵活性。 在"Spring3.2.9+commons-logging-1.2"这个压缩包中,我们看到的是Spring框架的...

    hibernate环境搭建

    - 如果选用Log4j:`log4j.jar`,同时可能还需要配置`log4j.properties`以定义日志级别和输出位置。 - 如果选用SLF4J:`slf4j-api.jar`和具体的实现库,如`slf4j-log4j12.jar`。 - 对于Java内置日志,仅需`java....

    spring框架所需要加载库合集

    在"spring框架所需要加载库合集"中,我们看到涉及的库包括`commons-logging`, `log4j`以及`spring`本身。这些库对于理解Spring框架的工作原理和实际应用至关重要。 1. **Spring框架**:Spring框架是整个集合的核心...

    hebernate注解

    - `slf4j-log4j12-1.5.10.jar` - `log4j-1.2.14.jar` - `mysql.jar` 3. **引入注解相关的包**: - `ejb3-persistence.jar` - `hibernate-annotations.jar` - `hibernate-commons-annotations.jar` #### 三、...

Global site tag (gtag.js) - Google Analytics