Log4J 学习笔记
l 什么是log4j?
Log4J 是Apache 的一个开源项目,是一个在我们编写代码过程提供实现日志输出功能的包。Log4J 可以实现通过配置的方式日志输出、日志目的地定义、日志格式定义 等功能,有效的管理日志。在使用Log4J 之前先看一下几个概念:
l log4j 基本概念
在使用Log4j 之前,先看看3 个基本概念:Looger,Appender,PatternLayout
三者关系如下:
图1:Logger,Appender,PatternLayout关系图
1.Logger : 日志输出器,提供输出日志功能。
Log4J 内置了7 中Log 等级,从低到高分别为ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF 。每个Logger 都要默认定义一个等级。同时对于每一条要输出的日志也定义了等级,不同等级的日志用不同的方法调用,共5 种等级(DEBUG, INFO, WARN, ERROR, FATAL), 通过如下方法写出日志:
Logger logger=Logger.getLogger( “logname ”);
logger.info(“…”);
logger.error(“…”);
logger.debug(“…”);
logger.warn(“…”);
logger.fatal(“…”);
如果日志的等级高于等于日志输出器的等级,那么该日志才会被写入。
2.Appender : 日志目的地,用来定义日志目的地对象。
在日志写出之前还必须先定义好日志器对应的日志目的地。一个日志器可以定义多个目的地。日志目的地有多种类型。其结构如下:
图2:Appender结构图
其中Appender 是顶层接口,下面定义了很多种Appender ,几种常见的Appender 解释如下:
ConsoleAppender: 控制台作为日志输出地
FileAppender: 文件作为日志输出地
RollingFileAppender: 日志文件的大小受到限制,当内容超出最大的限制时,该文件将向上滚动。
其他的类型笔者也未曾深入研究。
3.PatternLayout :日志布局,用于定义日志格式。
定义日志布局,指定在日志输出到目的地的时候以怎样的格式被输出。
l 3. 如何使用Log4J
无论你是否创建 logger , Log4J 都会默认创建一个 RootLogger ,该日志器可以通过 Logger.getRootLogger() 获得。所以的 logger 都将继承该根 Logger.
在使用 Log4j 进行日志记录之前必须先初始化 Log4J 配置,配置可以包含如下工作:
定义日志器 logger ,如:
定义指定 Layout 的 appender
定义 logger 对应的 appender 。
Log4j 可以通过如下两种方式进行初始化
a. 默认配置
org.apache.log4j.BasicConfigurator .configure ();
它将完成如下工作:
b. 自定义配置
这个是比较推荐也比较常用的一种配置。可以将配置定义在程序之外,在程序之外控制日志系统的运行。主要通过 XML 文件配置。由 org.apache.log4j.xml.DOMConfigurator.configure() 方法读入配置并初始化。 org/apache/log4j/xml/log4j.dtd 里定义了 XML 文件的语法。下面简单介绍如何在 XML 文件里定义 Logger , Appender , root 配置及两者关系等。
定义 Logger( 注:同名的 logger 在 Log4J 里只会有一个对象 。 ) :
以上是关于 Log4J 的一些概念和使用介绍。下面举两个简单例子说明:
例子 1 : 使用 BasicConfigurator.congigure() 初始化
Log4JTest.java:
例子 2 : 使用 XML 文件配置
Log4j_config.XML:
Log4JXMLTest.java:
以上是关于 Log4J 的一些基本介绍,笔者认为日志对一个应用的作用应该是巨大的,当然也会带来一定的系统开销,但是这是值得的。同时 Log4J 提供的可配置的日志系统管理,方便易用,推荐大家使用。