log4j的应用

一、为什么我们要使用Log4j
log4j是一个可以帮助开发人员进行日志管理的API类库。正如我们所知,如果在一个项目或产品中不做任何日志管理的话,那后果是十分可怕的。设想一下,有时客户会点出某些BUG,当维护人员赶去时,客户却发现自己怎么也点不出那个BUG了,还有即使点出来,如果一个空空的白页,维护人员也是难以解决的。这样几次下来,我想任谁都会崩溃。可如果实现我们做了日志处理,那情况就会好的多了。而且在开发期间我们也是需要日志帮助的。比如我们要去验证某个变量的值的时候,往往通过 System.out.println()语句将变量输入到控制台,而很显然,这类的调试语句在项目完成后是不应该再出现的。那时可能开发人员要一行一行的去找出 System.out.println()语句,然后将其删除或注释。如果当哪天我们又需要那些语句的时候……这时使用log4j可以很好的处理这类问题。因为它可以通过配置文件灵活的控制日志的输出方式以及输出类型,这点在稍后会详细的介绍,而选择它的另一个原因就是它的简单,让开发人员较容易掌握。
二、Log4j简单的应用
Log4j通常是通过一个配置文件来管理的,这个文件可以是java里常用的properties文件(键=值的形式),也可以是一个xml文件,当然也可以在java类里进行管理,但这种方式不如使用配置文件那样灵活,所以以下的例子我们通过使用properties文件来进行管理。
下面让我们开始,这一切会非常简单:我的环境是jdk1.5 + eclipse3.2 + MyEclipse5.首先创建一个项目,可以是java项目也可以是普通的java项目。这里创建一个普通的java项目,项目名称为:Log4jDemo,然后将log4j的包导入到项目中。现在创建一个测试类,名称为: com.log4jdemo.Test,包路径为:并引入 org.apache.log4j.Logger这个类。
 在main函数中做如下测试,因为只是个简单的例子,编写不是很规范。
Logger logger = Logger.getLogger(Test. class .getName());
这里通过指定名字获得一个日记记录器,一般名字为本类的名字。然后很简单:
logger.error( " 这是条错误 ..." );
error为日志记录的优先级,或者简单的来说它为你可以定义的日志的类型,log4j定义的优先级为:  OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL和自定义级别几种,但log4j建议我们使用其中的四种,优先级从高到低分别为:ERROR、WARN、INFO、DEBUG。级别的设置可以在代码里通过
logger.warn( " 这是条警告 ..." );
logger.info( " 这是条信息 ..." );
logger.debug( " 这是条调试信息 ..." );
几种方式来定义通过这里级别的定义,你可以在配置文件中通过一个开关来控制日志的输出。比如将开关设置为INFO级
配置根Logger
log4j.rootLogger= [level],[appenderName],[appenderName],...
当[level]设置为ALL时,则输出所有级别的日志,而当[level]设置为INFO的时候,则输出优先级相等或高于INFO级别的日志,以此类推,这里再次说明log4j里的优先级定义从低至高为: DEBUG 、INFO 、WARN 、ERROR 、FATAL。定义为OFF时则不做任何输出。
设置一个appender
    log4j.appender.[NAME]= org.apache.log4j.ConsoleAppender
这里的[NAME]就是上句[appenderName]所选的名称,可以理解为日志输出目的地的名字,名称可以随意取,我们知道日志可以输出到多个地方,比如可以输出到控制台,生成日志文件等。
log4j提供以下几种appender:
org.apache.log4j.ConsoleAppender//控制台
org.apache.log4j.FileAppender//文件
// 可以设置目标文件的大小,当文件到达这个尺寸的时候自动生成一个新的文 // 件,比如: log.txt log1.txt...... org.apache.log4j.RollingFileAppender
org.apache.log4j.DailyRollingFileAppender//每天产生一个日志文件
org.apache.log4j.WriterAppender//将日志信息以流的形式发送到任意指定的地方
设置日志文件的布局
log4j.appender.A1.layout= org.apache.log4j.PatternLayout
  org.apache.log4j.HTMLLayout//HTML格式布局
org.apache.log4j.PatternLayout //可灵活指定布局模式
                     
org.apache.log4j.SimpleLayout//简单的布局模式(包含日志信息的级别和字符串)
 
org.apache.log4j.TTCCLayout //包含日志产生的时间、线程、类别等等信息
 
 设置输出样式
log4j.appender.A1.layout.ConversionPattern= %-d{yyyy-MM-dd HH : mm:ss} [%c]-[%p] %m%n
 
log4j采用类似C语法的格式化输出方式。
%m         输出代码中指定的消息
%p          输出优先级,即 DEBUG INFO WARN ERROR FATAL
%r           输出自应用启动到输出该 log 信息耗费的毫秒数
%c         输出所属的类目,通常就是所在类的全名
%t         输出产生该日志事件的线程名
%n         输出一个回车换行符, Windows 平台为“ /r/n ”, Unix 平台为“ /n"
%d         输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式, 比如:%d   {yyy MMM dd   
              HH:mm:ss,SSS},输出类似200688 171028921
%l          输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
 
比如本例为 com.log4jdemo.Test
下面我们来看一下完整的配置文件:
log4j.rootLogger= ALL,A1,R
#======= 定义 appender 为控制台 =========#
log4j.appender.A1= org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout= org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern= [%l]-[%p] %m%n
#======== 定义 appender RollingFileAppender=========#
log4j.appender.R= org.apache.log4j.RollingFileAppender
l og4j.appender.R.File= ../logs/log.txt
log4j.appender.R.MaxFileSize= 512KB
log4j.appender.R.MaxBackupIndex= 1
log4j.appender.R.layout= org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern= %d{yyyy-MM-dd HH : mm:ss} [%t] [%c] [%p] - %m%n
我们可以看到,这里定义了两个输出目的地,一个是控制台,另一个是生成一个日志并且当日志大小大于 512KB 的时候自动穿件一个新的备份日志。注意 log4j.rootLogger= ALL,A1,R,这里可以选择如何将日志信息输出到什么地方,也就是说当项目不需要再向控制台输出的时候,我可以将rootLogger的A1去掉;如果当不需要输入或记录调试信息(debug)的时候,可以将All改为INFO,很方便吧?
做完这些,我们第一个 Log4j 的应用例子已经完成。(摘)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值