我们最早提到,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
分享到:
相关推荐
<property name="hibernate.logging.factory_class">org.hibernate.util.Log4jHelper$Log4jLoggerFactory ``` 这样,Hibernate的日志就会通过SLF4J-Log4j12进行输出,便于调试和问题排查。 **应用场景与优势** ...
这使得Spring在启动时会自动加载`log4j.properties`,而无需在Java代码中进行任何特殊处理。 最后,为了使Spring与log4j集成,我们需要在`web.xml`(对于Web应用)或`context.xml`(对于非Web应用)中引入log4j的...
<bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="staticMethod" value="org.apache.log4j.LogManager.getLoggerRepository"/> ...
Spring框架是Java领域广泛使用的轻量级框架,而Log4j则是日志记录领域的经典工具,提供了丰富的日志配置和管理功能。本实例结合Spring和Log4j,将为你提供一个实用的日志解决方案。 首先,我们要理解Spring是如何...
log4j.logger.org.springframework.beans.factory.xml=INFO log4j.logger.com.neam.stum.user=INFO ``` **步骤四:获取用户信息** 为了在日志中包含用户信息,可以通过Log4j的MDC(Mapped Diagnostic Context)来...
这个"spring整合log4j"的示例项目`log4j_spring_test`很可能包含了上述所有步骤的实现,初学者可以通过阅读源代码和运行测试来加深理解。通过这种方式,开发者可以在Spring应用程序中轻松地管理和控制日志,便于调试...
这个依赖项会将Log4j库引入到项目中,使得我们可以在代码中使用Log4j的相关类和方法。 接下来,我们需要配置Log4j。在`src`目录下,创建一个名为`log4j.properties`或`log4j.xml`的配置文件,这个文件会定义日志的...
通过学习Spring和Log4j的集成,你可以更好地理解如何在实际项目中处理日志,这对于排查问题、调试代码以及监控系统状态都极其重要。此外,熟悉这些基础工具的使用也有助于你逐渐掌握更复杂的日志管理系统,比如SLF4J...
4. **加载Log4j配置**:在Host Bundle的启动代码中,或者通过OSGi服务,我们可以确保在启动时加载Fragment Bundle中的Log4j配置。这可能需要一些自定义代码来实现,因为OSGi默认不自动加载Fragment Bundle的资源。 ...
了解如何整合日志框架(如Logback或Log4j)和监控工具(如Prometheus或ELK Stack)可以帮助我们提升生产环境下的应用管理能力。 8. **社区参与与协作** 开源项目鼓励社区参与,这包括代码贡献、问题讨论和文档改进...
这个项目可能包含了Spring的配置文件、Log4j的配置文件以及相关的Java代码,用于演示上述的日志管理策略。 总之,通过Spring框架,我们可以更有效地管理和控制Web应用中的日志,包括动态配置、AOP日志拦截等,从而...
然而,2021年,Log4j2 出现了两个高风险的安全漏洞,即 CVE-2021-44228 和 CVE-2021-45046,这两个漏洞可能导致远程代码执行(RCE)和拒绝服务(DOS)攻击。 **CVE-2021-44228 漏洞详解:** 这个漏洞主要存在于 Log...
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. 测试运行 最后一步是测试整个应用程序的功能。...
Commons Logging允许开发者在运行时选择或切换日志实现,例如log4j、java.util.logging或者SimpleLog等,增强了日志处理的灵活性。 在"Spring3.2.9+commons-logging-1.2"这个压缩包中,我们看到的是Spring框架的...
- 如果选用Log4j:`log4j.jar`,同时可能还需要配置`log4j.properties`以定义日志级别和输出位置。 - 如果选用SLF4J:`slf4j-api.jar`和具体的实现库,如`slf4j-log4j12.jar`。 - 对于Java内置日志,仅需`java....
在"spring框架所需要加载库合集"中,我们看到涉及的库包括`commons-logging`, `log4j`以及`spring`本身。这些库对于理解Spring框架的工作原理和实际应用至关重要。 1. **Spring框架**:Spring框架是整个集合的核心...
- `slf4j-log4j12-1.5.10.jar` - `log4j-1.2.14.jar` - `mysql.jar` 3. **引入注解相关的包**: - `ejb3-persistence.jar` - `hibernate-annotations.jar` - `hibernate-commons-annotations.jar` #### 三、...