log4j(1)
1.简介
程序开发环境中的日志记录是由嵌入在程序中以输出一些对开发人员有用信息的语句所组成。例如,跟踪语句(trace),结构转储和常见的system.out.println或printf调试语句。log4j提供分级方法在程序中嵌入日志记录语句。日志信息具有多种输出格式和多个输出级别。
使用一个专门的日志记录包,可以减轻对成千上万的system.out.println语句的维护成本,因为日志记录可以通过配置脚本在运行时得以控制。log4j维护嵌入在程序代码中的日志记录语句。通过规范日志记录的处理过程,一些人认为应该鼓励更多的使用日志记录并且获得更高程度的效率。
2.安装
为了使用我们即将要安装的日志记录工具,还必须要设置操作环境,只有这样,工具才能知道从哪里找到它所需要的信息,并且操作系统知道从哪里找到这个工具。那么,怎样做呢?实际上,它要求更改操作环境。我有一些这方面的资格文档。 configuring a windows working environment 和 configuring a unix working environment.
从 http://jakarta.apache.org/log4j/docs/download.html 下载log4j发行版。
解压存档文件到合适的目录中。
添加文件 dist/lib/log4j-1.2.6.jar 到 classpath 环境变量中。
3.log4j的基本概念
使用log4j大概涉及3个主要概念:
公共类 logger
logger 负责处理日志记录的大部分操作。
公共接口 appender
appender 负责控制日志记录操作的输出。
公共抽象类layout
layout 负责格式化appender的输出。
3.1.logger
日志记录器(logger)是日志处理的核心组件。log4j具有5种正常级别(level)。 日志记录器(logger)的可用级别level (不包括自定义级别 level), 以下内容就是摘自log4j api (http://jakarta.apache.org/log4j/docs/api/index.html ):
static level debug
debug level指出细粒度信息事件对调试应用程序是非常有帮助的。
static level info
info level表明 消息在粗粒度级别上突出强调应用程序的运行过程。
static level warn
warn level表明会出现潜在错误的情形。
static level error
error level指出虽然发生错误事件,但仍然不影响系统的继续运行。
static level fatal
fatal level指出每个严重的错误事件将会导致应用程序的退出。
另外,还有两个可用的特别的日志记录级别: (以下描述来自log4j api http://jakarta.apache.org/log4j/docs/api/index.html ):
static level all
all level是最低等级的,用于打开所有日志记录。
static level off
off level是最高等级的,用于关闭所有日志记录。
日志记录器(logger)的行为是分等级的。如下表所示:
图.日志输出等级
日志记录器(logger)将只输出那些级别高于或等于它的级别的信息。如果没有设置日志记录器(logger)的级别,那么它将会继承最近的祖先的级别。因此,如果在包com.foo.bar中创建一个日志记录器(logger)并且没有设置级别,那它将会继承在包com.foo中创建的日志记录器(logger)的级别。如果在com.foo中没有创建日志记录器(logger)的话,那么在com.foo.bar中创建的日志记录器(logger)将继承root 日志记录器(logger)的级别,root日志记录器(logger)经常被实例化而可用,它的级别为debug。
有很多方法可以创建一个日志记录器(logger),下面方法可以取回root日志记录器:
logger logger = logger.getrootlogger();
还可以这样创建一个新的日志记录器:
logger logger = logger.getlogger("mylogger");
比较常用的用法,就是根据类名实例化一个静态的全局日志记录器:
static logger logger = logger.getlogger(test.class);
所有这些创建的叫"logger"的日志记录器都可以用下面方法设置级别:
logger.setlevel((level)level.warn);
可以使用7个级别中的任何一个; level.debug, level.info, level.warn, level.error, level.fatal, level.all and level.off.
(未完待续)
闽公网安备 35060202000074号