log4j有3个主要组成部分:loggers(记录器)、appenders(挂载点)和layouts(布局)。这三种组件一起工作,使开发人员能够按照信息类型和级别记录日志,并且在运行时控制信息的格式和记录位置。
日志的层次结构
相对于平台的System.out.println,所有Logger API的首要优势是能够禁止某些特定的日志信息的输出,而让其它日志信息打印无阻。这样的能力要求对日志信息按照开发人员指定的标准进行分类。正是基于此,之前版本的log4j以category作为其中心概念。从1.2版本开始,Logger类取代了Category类。对于那些熟悉log4j的早期版本, Logger类可以被视为仅仅是Category类的别名。
Logger是命名实体,其名字是大小写敏感的,遵守以下分层的命名规则:
- 如果Logger A的名称后面加一个点,是Logger B名称的前缀,则A是B的祖先。
- 如果Logger A与其后代Logger B之前没有其它祖先,则A是B的父亲。
例如:名为“com.foo”的Logger是“com.foo.Bar”的父亲。同样,“java”是“java.util”的父亲,是“java.util.Vector”的祖先。此命名方案应该是大多数开发人员所熟悉的。
根记录器(root logger)在记录器(logger)的层次结构的顶部。它有两个特点:
- 总是存在的。
- 不能通过名称获取。
调用类静态方法Logger.getRootLogger获取根记录器。所有其他记录器通过类的静态方法Logger.getLogger进行实例化和检索。这个方法需要记录器的名称作为一个参数。使用相同的名称调用getLogger
方法将总是返回同一个Logger对象。因此,不需要将记录器对象的引用传递过来,就可以在代码的任意位置获取已经设定的记录器对象。与生物学上的父子关系矛盾的一点是,可以按任意顺序创建或配置记录器对象,即祖先记录器对象可以晚于子孙记录器对象而实例化。
下面列出了Logger类的一些基本方法。
package org.apache.log4j;
public class Logger {
// Creation & retrieval methods:
public static Logger getRootLogger();
public static Logger getLogger(String name);
// printing methods:
public void trace(Object message);
public void debug(Object message);
public void info(Object message);
public void warn(Object message);
public void error(Object message);
public void fatal(Object message);
// generic printing method:
public void log(Level l, Object message);
}
记录器可能被分配级别。级别定义在org.apache.log4j.Level 类中。包括:TRACE,DEBUG,INFO,WARN,ERROR和FATAL。你可以通过继承Level类的子类来自定义级别,不过不鼓励这么做。更好的方法将在后面解释。
如果一个记录器没有被分配一个级别,那么它的级别继承自与其最接近且已分配级别的祖先。
为了确保所有的记录器最终可以继承一个级别,根记录器总是被分配一个级别。
通过调用logger实例的打印方法记录日志。这些打印方法包括debug、info、warn、error、fatal、log。
打印方法决定了一个日志请求的级别。例如,如果c是一个Logger实例,c.info("..")是INFO级别的日志请求。
当日志请求的级别高于或等于记录器的级别,日志记录请求才是有效的。否则,该请求被禁止。没有指定级别的logger将从记录器的层次结构中继承。这个规则总结如下。写道
基本的选择规则
日志请求的级别是p,日志记录器的级别为q,仅当p>=q时,该日志请求有效。
这个规则是log4j的核心。标准的等级高低是:DEBUG < INFO < WARN < ERROR < FATAL。
Log4j的环境通常是在程序初始化时进行配置,推荐的方式是读取配置文件。稍后将讨论这种方法。
Log4j可以很容易地为记录器命名。在每一个类中以类的完整限定名初始化一个记录器对象。这是非常有用、直观的一种定义记录器的方法,可以很直观地识别出日志信息的来源。当然,这只是可能的方法中的一种,开发人员可以根据自己的期望来定义记录器。
ps:以上内容源自http://logging.apache.org/log4j/1.2/manual.html
分享到:
相关推荐
Log4j作为Java平台上的一个著名日志框架,因其强大的功能和灵活性而被广泛应用。 **Log4j简介** Log4j是由Apache软件基金会开发的一个开源项目,它为Java应用程序提供了一种灵活的日志记录机制。Log4j的主要目标是...
通过对 Log4j 的三个主要组件——Loggers、Appenders 和 Layouts 的详细了解,我们可以根据项目的具体需求来定制日志记录方案。通过配置文件,可以灵活地调整日志级别、选择日志输出的目的地以及定义日志信息的格式...
Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...
这个文件定义了Loggers、Appenders和Layouts的具体设置。以下是一个简单的配置示例: ```properties # log4j.properties log4j.rootLogger=DEBUG, Console log4j.appender.Console=org.apache.log4j....
log4j的核心组件主要包括**Loggers(记录器)**、**Appenders(输出源)**和**Layouts(布局)**。 1. **Loggers (记录器)**:负责生成日志信息,并决定是否发送日志信息到Appenders。记录器可以设置日志级别,常见的级别...
- **扩展性**:除了预定义的输出设备,Log4j还允许开发者自定义Appenders和Layouts,以适应特定的需求。 安装Log4j通常涉及下载Apache Log4j的最新版本,然后将其解压缩到合适的位置。在Java项目中,将Log4j的库...
这篇学习笔记主要涵盖了Log4j的三个核心组件:日志记录器(Loggers)、日志级别以及输出端(Appenders)。 首先,日志记录器(Loggers)是Log4j的基础。每个Logger对象都有一个唯一的名字,这个名字通常是类名,...
这篇日志管理系统简单使用说明将介绍Log4j的三个核心组件:Loggers、Appenders和Layouts,帮助你理解如何在Java应用程序中有效地使用Log4j进行日志管理。 1. **Loggers** - Loggers是日志记录的核心,它们定义了...
- 配置文件是Log4J的核心,用于定义loggers、appenders和layouts。例如: ``` log4j.rootLogger=DEBUG, Console, File log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console....
《Apache Log4j详解——基于log4j-1.2.16版本》 Apache Log4j是一款广泛使用的Java日志记录框架,它为开发者提供了一种灵活且强大的日志处理机制,使得在应用程序开发中可以方便地进行日志记录、管理和分析。Log4j...
通过Log4j的三大核心组件——Loggers、Appenders和Layouts,我们可以灵活地控制日志的生成、存储以及格式化。这对于开发高质量的应用程序至关重要,不仅可以帮助我们更好地追踪问题,还能够提高系统的可维护性和可...
3. **配置Tomcat**:在`$CATALINA_HOME/lib`目录下添加`log4j-api.jar`和`log4j-slf4j-impl.jar`,这将使Tomcat使用Log4j2作为其内部的日志系统。 4. **排除其他日志实现**:确保你的应用中没有引入其他的日志实现...
今天,我们将讨论如何将 Log4j2 结合 Slf4j 配置使用,以便更好地记录和管理日志。 首先,我们需要下载 Log4j2 和 Slf4j 的 jar 文件。Log4j2 的下载地址是 http://logging.apache.org/log4j/2.x/download.html,...
四、Log4j2配置详解 1. 日志级别:Log4j2支持TRACE、DEBUG、INFO、WARN、ERROR、FATAL和OFF七个级别。通过配置文件,可以设置全局日志级别,也可以针对特定类或包设置不同级别。 2. Appenders:Appender是日志输出...
Log4j 2 提供了一个强大且易于使用的 API,支持多种日志级别(例如 TRACE、DEBUG、INFO、WARN、ERROR 和 FATAL),并允许通过不同的 Appenders 和 Layouts 来配置日志输出。 #### 6. 配置 Log4j 2 支持多种配置...
经过无数次的增强、多个版本迭代以及大量的工作后,这个 API 演变成为 log4j——一个流行的 Java 日志包。log4j 是 Apache 软件基金会的一个开源项目,遵循 Apache Software License 开源许可证。 最新的 log4j ...
2. `log4j-core.jar`: 实现了Log4j2的各个组件,如Appenders、Layouts等。 如果你还需要其他特性,如异步日志记录、JMX控制台等,可能还需要额外的jar包。确保正确引入这些依赖,以便Log4j2能正常工作。 **四、Log...