Log4j入门文档
需积分: 0 69 浏览量
更新于2007-09-29
收藏 125KB DOC 举报
### Log4j入门知识点详解
#### 一、Log4j简介
Log4j是一个开源的日志框架,由Apache软件基金会负责维护。它提供了一种灵活的日志记录机制,支持多种输出方式和格式化选项,广泛应用于Java应用的开发中。
#### 二、Log4j核心组件
Log4j的核心组件主要包括`Logger`、`Appender`和`Layout`三部分,这些组件共同协作完成日志记录的工作。
##### 1. Logger - 日志写出器
- **功能**:`Logger`对象用于替代传统的`System.out`或`System.err`输出方式,提供更强大的日志记录能力。
- **使用**:程序员可以通过`Logger`对象提供的方法来输出不同级别的日志信息。
- **输出方法**:
- `public void debug(Object msg);`
- `public void debug(Object msg, Throwable t);`
- `public void info(Object msg);`
- `public void info(Object msg, Throwable t);`
- `public void warn(Object msg);`
- `public void warn(Object msg, Throwable t);`
- `public void error(Object msg);`
- `public void error(Object msg, Throwable t);`
- `public void fatal(Object msg);`
- `public void fatal(Object msg, Throwable t);`
##### 2. Appender - 日志目的地
- **功能**:`Appender`负责将格式化后的日志信息输出到指定的目的地。
- **类型**:
- `ConsoleAppender`:将日志信息输出到控制台。
- `FileAppender`:将日志信息输出到指定的文件。
- `RollingFileAppender`:将日志信息输出到大小受限的文件,当文件达到指定大小时会自动进行滚动。
##### 3. Layout - 日志格式化器
- **功能**:`Layout`负责将日志信息格式化为字符串形式。
- **类型**:
- `PatternLayout`:使用指定的模式来格式化日志信息。
#### 三、Logger命名规则
- **命名特点**:`Logger`对象通过一个字符串名称进行识别,名称是区分大小写的,并且具有继承关系。
- **命名示例**:例如,`x.y`是`x.y.z`的父级`Logger`。
- **根`Logger`**:根`Logger`是所有`Logger`的祖先,具有以下特性:
- 总是存在。
- 不能通过名字获取。
- **获取方式**:
- 通过`public static Logger Logger.getRootLogger()`获取根`Logger`。
- 通过`public static Logger Logger.getLogger(String name)`或`public static Logger Logger.getLogger(Class clazz)`获取或创建一个命名`Logger`。
#### 四、日志级别
- **作用**:每个`Logger`都会分配一个日志级别(`LogLevel`),用来控制日志信息的输出。
- **默认继承**:如果没有为`Logger`分配日志级别,则会继承其父级`Logger`的日志级别。
- **日志请求处理**:日志请求(`Logging Request`)也会有一个级别,如果该请求的级别大于等于`Logger`的级别,则该请求会被处理;否则会被忽略。
- **级别预定义**:`Level`类中预定义了五个级别,按优先级从低到高排序如下:
- `Level.ALL < Level.DEBUG < Level.INFO < Level.WARN < Level.ERROR < Level.FATAL < Level.OFF`
#### 五、示例代码分析
以下是一个简单的示例代码,展示了如何使用Log4j创建一个`Logger`对象,设置默认配置,并输出日志请求。
```java
import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
public class Log4jTest {
public static void main(String argv[]) {
// 创建名为Log4jTest的Logger对象。
Logger logger = Logger.getLogger(Log4jTest.class);
// 使用默认配置。
BasicConfigurator.configure();
// 设置Logger级别为INFO。
logger.setLevel(Level.INFO);
// 输出不同级别的日志信息。
logger.debug("This is a debug message.");
logger.info("This is an info message.");
logger.warn("This is a warning message.");
logger.error("This is an error message.");
logger.fatal("This is a fatal message.");
}
}
```
此示例代码首先创建了一个名为`Log4jTest`的`Logger`对象,然后使用默认配置,并设置其日志级别为`INFO`。之后,通过该`Logger`对象输出不同级别的日志信息。
以上就是关于Log4j的基础知识介绍,包括其核心组件、命名规则、日志级别以及一个简单的示例代码。希望对初学者有所帮助。