Log4J 原理以及配置的研究
在进行 Log4J 的使用过程中,我对下面的两个问题比较敏感:
1、 Log4J 是如何进行工作的?
这是在 Log4J 项目中对 Log4J 的介绍中的一段话
With log4j it is possible to enable logging at runtime without modifying the application binary. The log4j package is designed so that these statements can remain in shipped code without incurring a heavy performance cost. Logging behavior can be controlled by editing a configuration file, without touching the application binary.
对于 Log4J 的具体如何进行工作的原理,在 javaeye 上 buaawhl 给出了一个解释:
http://buaawhl.javaeye.com/blog/6450
总结一下就是利用 JDK 提供的 new Throwable().getStackTrace() 方法返回当前运行栈的结构层次,然后对返回的调用栈的信息进行分析,找到调用该类的类的名称。(也就是Log4J自己说的Runtime期间实现Log)
由于在 Log4J 中只存在一个根 Logger ,并且 Logger 之间存在继承的关系,并且我们可以在配置文件( log4J.proerties 或者 XML )中进行配置,可以初始化指定的 Logger ,并且对指定的 Logger 进行一些相关的配置,如设置如何进行输出,以及如何将输出进行布局。并且由于 Logger 之间会存在继承的关系(会找一个最近的 Logger 进行继承,如果没有就以根 Logger 作为父类,共享父类的配置信息),以及父子类之间初始化没有先后的顺序,所以我们可以在配置文件中,对各个程序以及不同的包中使用到 Log4j 的 Log 纪录方式进行配置。
如果在同一个 APPLICATION 对相同名称的 Logger 进行调用,那么只会返回一个 Logger 实例。
2、 Log4J 会不会对系统的性能造成大的影响?
这是对 Log4J 性能的一些描述,看来还是不错的,呵呵,在调整一下 Log 的等级就可以了。
On an AMD Duron clocked at 800Mhz running JDK 1.3.1, it costs about 5 nanoseconds to determine if a logging statement should be logged or not. Actual logging is also quite fast, ranging from 21 microseconds using the SimpleLayout, 37 microseconds using the TTCCLayout. The performance of the PatternLayout is almost as good as the dedicated layouts, except that it is much more flexible.
注:对于 Common Logging 和 Log4J 的关系可以参见 (其实 JCL 是一个规范,对一些 Log 工具进行了包装,我们常会使用到的具体实现还是 Log4j ,当然也可以使用其他的实现)
http://hedong.3322.org/archives/000316.html
参考资料:
http://www-128.ibm.com/developerworks/cn/java/l-log4j/index.html 使用 Log4J 进行日志操作
http://zooo.51.net/heavyz_cs/notebook/log4j.html Log4J 学习笔记(推荐)
http://www.dingl.com/view.shtml?xh=485 log4j 配置
http://hedong.3322.org/archives/000193.html 竹笋炒肉的 Log4J 学习笔记
http://forum.springside.org.cn/redirect.php?fid=3&tid=382&goto=nextoldset SpringSide 对 Log4j 的使用要点
相关推荐
标题中的“log4jdbc-log4j2配置简记”指的是在Java开发中使用log4jdbc-log4j2库来监控和记录SQL查询的过程。log4jdbc是一个开源项目,它允许开发者通过日志系统来追踪数据库操作,而log4j2是log4j的升级版,提供了更...
本文将深入探讨log4j-1.2.17.jar及其配置文件,以揭示其工作原理和应用场景。 一、Log4j简介 Log4j是一个灵活且高效的日志记录库,为Java应用程序提供了丰富的日志功能。它的设计目标是提供一个能够进行调试、性能...
配置文件是 Log4j 的核心组件之一,通过配置文件可以灵活地控制日志的输出。 Log4j 的配置方式 Log4j 提供了多种配置方式,包括: * 通过配置文件来配置 Log4j * 通过 Java 代码来配置 Log4j Log4j 的输出级别 ...
**Log4j 详细配置** Log4j 是一个广泛使用的 Java 日志框架,它提供了灵活且高效的日志记录功能,适用于各种规模的应用程序。本文将深入探讨 Log4j 的配置,帮助开发者更好地理解和使用这个强大的工具。 ### 1. ...
Log4j是一款广泛使用的Java日志记录框架,它为应用程序提供了灵活的日志记录功能。这个压缩包"Log4j及其配置.rar"包含...提供的log4j-1.2.15.jar文件和配置文档可以帮助用户快速上手并理解Log4j的工作原理和使用方法。
log4j的使用习惯,让每个类都拥有一个private static的Logger对象,用来输出该类中的全部日志信息 ,使用xml文件来完成对log4j环境的配置。在项目的main class中的静态初始化块里放log4j环境的配置代码。注意:在一...
你可以打开这个项目,查看`log4j.properties`配置文件,以及`Main`类中的日志输出代码,运行程序,观察日志文件`app.log`的内容,以直观地理解Log4j的工作原理。 总结,Log4j作为Java日志管理的重要工具,通过配置...
### LOG4J配置详解 #### 一、LOG4J简介 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以在Java应用程序中控制日志打印的方式、格式以及输出的目的地。它允许开发者根据级别记录日志信息,使用户能够更加...
首先,我们要理解Log4j的基本工作原理。Log4j的核心组件包括Logger、Appender和Layout。Logger负责生成日志事件,Appender则负责接收这些事件并将其输出到指定的目标(如控制台、文件、数据库等),而Layout则是负责...
这个压缩包包含了Log4j 1.2.16的源代码,对于学习和理解Log4j的工作原理以及自定义其行为非常有帮助。 在Log4j中,核心概念包括Logger、Appender、Layout和Level。Logger是日志记录的主要接口,通过它来创建和管理...
首先,我们需要理解Log4j的工作原理。Log4j主要包括三个核心组件:Logger(日志器)、Appender(输出器)和Layout(布局)。Logger负责创建和管理日志记录,Appender决定日志信息输出到哪里,而Layout则控制日志信息...
本工程基于Eclipse IDE,配置了一个简单的Log4j设置,实现了每天自动将日志输出到一个特定命名格式的文件中,即“XXX_年月日时分.log”。下面我们将详细解析这个配置及其工作原理。 1. **Log4j介绍**: Log4j是一...
**标题与描述解析** 标题提及的是“新版本与旧版本log4j.jar包下载”,这表明资源中可能包含了不同版本的log4j日志库...通过理解Log4j的工作原理和配置方法,开发者可以有效地利用日志信息来提升代码质量和调试效率。
Log4j的配置文件通常为`log4j.properties`或`log4j.xml`,其中定义了日志的行为。例如: ```properties log4j.rootLogger=ERROR, FILE log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE...
在实际使用中,通常会首先配置Log4j,例如通过XML配置文件`log4j.properties`或`log4j.xml`,指定Appender和Layout,并设置各个Logger的级别。然后在代码中通过`Logger.getLogger()`获取Logger实例,一般推荐使用...
**日志框架Log4j详解及配置实例** Log4j是Apache组织开发的一款强大的日志处理框架,广泛应用于Java应用程序中,提供灵活的日志记录功能。本文将详细介绍Log4j的配置方法,并通过实例帮助初学者理解其工作原理。 #...
本文将深入探讨Spring Boot集成的Log4j2框架,解析其工作原理、配置方式以及实际应用。 一、Log4j2简介 Log4j2是Apache基金会开发的一个日志处理框架,它是Log4j的升级版,提供了更高效的性能和丰富的功能。Log4j2...
首先,我们要理解Log4j的工作原理。Log4j允许开发者自定义日志输出的方式,包括输出到控制台、文件、数据库等。它使用了`QuietWriter`类来写入日志,`QuietWriter`继承自`FilterWriter`,而`FilterWriter`又继承自`...
本篇文章将详细探讨一个感觉还不错的Log4j配置文件,旨在帮助读者深入理解其工作原理和配置细节。 Log4j的核心在于其配置文件,通常命名为`log4j.properties`,它是通过Apache Log4j API定义日志输出格式、级别和...
本示例配置`log4j-demo.zip`提供了一个实际的日志配置案例,我们将探讨其背后的原理和使用方法。 `log4j`的核心概念包括Appender、Layout、Level和Logger。Appender定义了日志信息输出的目的地,如控制台、文件、...