`
zywsz
  • 浏览: 4995 次
社区版块
存档分类
最新评论

log4j学习笔记——Loggers、Appenders和Layouts

    博客分类:
  • java
阅读更多

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)的层次结构的顶部。它有两个特点:

  1. 总是存在的。
  2. 不能通过名称获取。

调用类静态方法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,日志——日志抓取

    Log4j作为Java平台上的一个著名日志框架,因其强大的功能和灵活性而被广泛应用。 **Log4j简介** Log4j是由Apache软件基金会开发的一个开源项目,它为Java应用程序提供了一种灵活的日志记录机制。Log4j的主要目标是...

    log4j详细配置

    通过对 Log4j 的三个主要组件——Loggers、Appenders 和 Layouts 的详细了解,我们可以根据项目的具体需求来定制日志记录方案。通过配置文件,可以灵活地调整日志级别、选择日志输出的目的地以及定义日志信息的格式...

    SpringBoot框架配置log4j和log4j2的配置代码

    Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...

    log4j需要jar

    这个文件定义了Loggers、Appenders和Layouts的具体设置。以下是一个简单的配置示例: ```properties # log4j.properties log4j.rootLogger=DEBUG, Console log4j.appender.Console=org.apache.log4j....

    log4j实用配置扩展

    log4j的核心组件主要包括**Loggers(记录器)**、**Appenders(输出源)**和**Layouts(布局)**。 1. **Loggers (记录器)**:负责生成日志信息,并决定是否发送日志信息到Appenders。记录器可以设置日志级别,常见的级别...

    Log4j教程.docx

    - **扩展性**:除了预定义的输出设备,Log4j还允许开发者自定义Appenders和Layouts,以适应特定的需求。 安装Log4j通常涉及下载Apache Log4j的最新版本,然后将其解压缩到合适的位置。在Java项目中,将Log4j的库...

    log4j的学习笔记

    这篇学习笔记主要涵盖了Log4j的三个核心组件:日志记录器(Loggers)、日志级别以及输出端(Appenders)。 首先,日志记录器(Loggers)是Log4j的基础。每个Logger对象都有一个唯一的名字,这个名字通常是类名,...

    Log4j日志管理系统简单使用说明1

    这篇日志管理系统简单使用说明将介绍Log4j的三个核心组件:Loggers、Appenders和Layouts,帮助你理解如何在Java应用程序中有效地使用Log4j进行日志管理。 1. **Loggers** - Loggers是日志记录的核心,它们定义了...

    Log4J日志代码

    - 配置文件是Log4J的核心,用于定义loggers、appenders和layouts。例如: ``` log4j.rootLogger=DEBUG, Console, File log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console....

    log4j-1.2.16

    《Apache Log4j详解——基于log4j-1.2.16版本》 Apache Log4j是一款广泛使用的Java日志记录框架,它为开发者提供了一种灵活且强大的日志处理机制,使得在应用程序开发中可以方便地进行日志记录、管理和分析。Log4j...

    Log4j日志管理

    通过Log4j的三大核心组件——Loggers、Appenders和Layouts,我们可以灵活地控制日志的生成、存储以及格式化。这对于开发高质量的应用程序至关重要,不仅可以帮助我们更好地追踪问题,还能够提高系统的可维护性和可...

    tomcat9 slf4j+log4j2 写日志.zip

    3. **配置Tomcat**:在`$CATALINA_HOME/lib`目录下添加`log4j-api.jar`和`log4j-slf4j-impl.jar`,这将使Tomcat使用Log4j2作为其内部的日志系统。 4. **排除其他日志实现**:确保你的应用中没有引入其他的日志实现...

    Log4j2结合Slf4j配置使用

    今天,我们将讨论如何将 Log4j2 结合 Slf4j 配置使用,以便更好地记录和管理日志。 首先,我们需要下载 Log4j2 和 Slf4j 的 jar 文件。Log4j2 的下载地址是 http://logging.apache.org/log4j/2.x/download.html,...

    spring-boot-starter-log4j2

    四、Log4j2配置详解 1. 日志级别:Log4j2支持TRACE、DEBUG、INFO、WARN、ERROR、FATAL和OFF七个级别。通过配置文件,可以设置全局日志级别,也可以针对特定类或包设置不同级别。 2. Appenders:Appender是日志输出...

    log4j-users-guide 用户手册

    Log4j 2 提供了一个强大且易于使用的 API,支持多种日志级别(例如 TRACE、DEBUG、INFO、WARN、ERROR 和 FATAL),并允许通过不同的 Appenders 和 Layouts 来配置日志输出。 #### 6. 配置 Log4j 2 支持多种配置...

    log4j2用户指南

    经过无数次的增强、多个版本迭代以及大量的工作后,这个 API 演变成为 log4j——一个流行的 Java 日志包。log4j 是 Apache 软件基金会的一个开源项目,遵循 Apache Software License 开源许可证。 最新的 log4j ...

    log4j2所需jar包和log4j2的详细配置

    2. `log4j-core.jar`: 实现了Log4j2的各个组件,如Appenders、Layouts等。 如果你还需要其他特性,如异步日志记录、JMX控制台等,可能还需要额外的jar包。确保正确引入这些依赖,以便Log4j2能正常工作。 **四、Log...

Global site tag (gtag.js) - Google Analytics