Log4j详细总结.docx

上传人:b****6 文档编号:4763864 上传时间:2022-12-08 格式:DOCX 页数:6 大小:18.09KB
下载 相关 举报
Log4j详细总结.docx_第1页
第1页 / 共6页
Log4j详细总结.docx_第2页
第2页 / 共6页
Log4j详细总结.docx_第3页
第3页 / 共6页
Log4j详细总结.docx_第4页
第4页 / 共6页
Log4j详细总结.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

Log4j详细总结.docx

《Log4j详细总结.docx》由会员分享,可在线阅读,更多相关《Log4j详细总结.docx(6页珍藏版)》请在冰豆网上搜索。

Log4j详细总结.docx

Log4j详细总结

 

Log4j总结

引子

随着Java开发的不断发展,程序日益趋于完善,特别是日志的管理,更加重视组件的可重用性,在这一点上Apache公司为我们提供强有力的日志操作包------Log4j

概念

Log4j是Apache公司提供的开源项目,通过应用Log4j我门可以控制日志的输出目的是控制台,文件GUI组件,甚至是套接口服务器,NT的时间记录器,UNIXSysLog守护进程等可以控制每条日志的输出格式,通过定义每条日志的级别,我们可以更加细致的控制日志的生成过程,最值得我们借鉴的是:

这些有点我们仅仅是通过一个配置文件灵活的控制,而不需要更改任何应用程序的代码。

此外Log4J为我们提供了多种语言的接口,你可以在C、C++、.Net、PL/SQL程序中使用Log4j,用法和在JAVA程序中的用法一样,这样使得在多语言分布式的系统中,得到一个统一一致的日志模块。

Log4j可以通过第三方扩展,可以方便的将Log4j集成到J2EE,JNDI,甚至是SNMP中。

Log4j配置详细

配置文件的定义:

Log4j支持两种配置文件的定义,一种是XML格式的文件,一种是JAVA特定文件Log4j.properties(键=值)

属性文件中主要元素的介绍:

配置根Logger:

Logger负责处理日志记录的大部分操作语法是Log4j.rootLogger=[level],appenderName,appenderName,………其中level记录日志的优先级,分别为OFFFATALERRORWARN,INFODEBUGALL或者自定义的级别,Log4j建议只使用四个级别优先级分别是ERRORWARNINFODEBUG通过在这里定义的级别你可以控制到应用程序中相应级别的日志信息的开关。

例如:

如果定义为INFO级别只有等于或高于这个级别的才进行处理,所以DEBUG级别的信息将不会被打印出来。

ALL是打印出所有的信息,OFF关闭所有日志的输出,AppenderName是指你的日志信息输出到那里,同事可以定义多个输出目的地。

配置日志信息输出目的地AppenderAppender负责日志的输出可操作语法是:

Log4j.appender.appenderName=……………………………

Appender有几种:

org.apache.log4j.ConsoleAppender(控制台),

org.apache.log4j.FileAppender(文件),

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件。

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

配置日志信息的格式(布局)LayoutLayout负责格式化Appender的输出。

语法为:

log4j.appender.appenderName.layout=fully.qualified.name.of.layout.class

log4j.appender.appenderName.layout.option1=value1…

log4j.appender.appenderName.layout.optionN=valueN

Log4j提供的layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

格式化日志信息

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:

  %m输出代码中指定的消息

  %p输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

  %r输出自应用启动到输出该log信息耗费的毫秒数

  %c输出所属的类目,通常就是所在类的全名

  %t输出产生该日志事件的线程名

  %n输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”

  %d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:

%d{yyyyMMMddHH:

mm:

ss,SSS},输出类似:

2002年10月18日22:

10:

28,921

  %l输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

Log4j属性文件的详细写法

 1log4j.rootCategory=INFO,stdout,R

  此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名。

等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO,WARN,ERROR的log信息,而DEBUG信息不会被显示,具体讲解可参照第三部分定义配置文件中的logger。

  3log4j.appender.stdout=org.apache.log4j.ConsoleAppender

  此句为定义名为stdout的输出端是哪种类型,可以是

  org.apache.log4j.ConsoleAppender(控制台),

  org.apache.log4j.FileAppender(文件),

  org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

  org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  具体讲解可参照第三部分定义配置文件中的Appender。

  4log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

  此句为定义名为stdout的输出端的layout是哪种类型,可以是

  org.apache.log4j.HTMLLayout(以HTML表格形式布局),

  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

  具体讲解可参照第三部分定义配置文件中的Layout。

  5log4j.appender.stdout.layout.ConversionPattern=[QC]%p[%t]%C.%M(%L)|%m%n

  如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:

  %m输出代码中指定的消息

  %p输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

  %r输出自应用启动到输出该log信息耗费的毫秒数

  %c输出所属的类目,通常就是所在类的全名

  %t输出产生该日志事件的线程名

  %n输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”

  %d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:

%d{yyyyMMMddHH:

mm:

ss,SSS},输出类似:

2002年10月18日22:

10:

28,921

  %l输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

  [QC]是log信息的开头,可以为任意字符,一般为项目简称。

  输出的信息

  [TS]DEBUG[main]AbstractBeanFactory.getBean(189)|Returningcachedinstanceofsingletonbean'MyAutoProxy'

  具体讲解可参照第三部分定义配置文件中的格式化日志信息。

  7log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

  此句与第3行一样。

定义名为R的输出端的类型为每天产生一个日志文件。

  8log4j.appender.R.File=D:

\\Tomcat5.5\\logs\\qc.log

  此句为定义名为R的输出端的文件名为D:

\\Tomcat5.5\\logs\\qc.log可以自行修改。

  9log4j.appender.R.layout=org.apache.log4j.PatternLayout

  与第4行相同。

  10log4j.appender.R.layout.ConversionPattern=%d-[TS]%p%t%c-%m%n

  与第5行相同。

  12.neusoft=DEBUG

  指定com.neusoft包下的所有类的等级为DEBUG。

  可以把com.neusoft改为自己项目所用的包名。

  13.opensymphony.oscache=ERROR

  14.sf.navigator=ERROR

  这两句是把这两个包下出现的错误的等级设为ERROR,如果项目中没有配置EHCache,则不需要这两句。

  15mons=ERROR

  16log4j.logger.org.apache.struts=WARN

  这两句是struts的包。

17log4j.logger.org.displaytag=ERROR

  这句是displaytag的包。

(QC问题列表页面所用)

 18log4j.logger.org.springframework=DEBUG

  此句为Spring的包。

 24log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

 25log4j.logger.org.hibernate=DEBUG

  此两句是hibernate的包。

  以上这些包的设置可根据项目的实际情况而自行定制。

Log4j在java中的应用

第一步:

加入log4j-1.2.8.jar到lib下。

  第二步:

在CLASSPATH下建立log4j.properties。

内容如下:

  1log4j.rootCategory=INFO,stdout,R

  2

  3log4j.appender.stdout=org.apache.log4j.ConsoleAppender

  4log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

  5log4j.appender.stdout.layout.ConversionPattern=[QC]%p[%t]%C.%M(%L)|%m%n

  6

  7log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

  8log4j.appender.R.File=D:

\\Tomcat5.5\\logs\\qc.log

  9log4j.appender.R.layout=org.apache.log4j.PatternLayout

  10log4j.appender.R.layout.ConversionPattern=%d-[TS]%p%t%c-%m%n

  11

  12.neusoft=DEBUG

  13.opensymphony.oscache=ERROR

  14.sf.navigator=ERROR

  15mons=ERROR

  16log4j.logger.org.apache.struts=WARN

  17log4j.logger.org.displaytag=ERROR

  18log4j.logger.org.springframework=DEBUG

  19.ibatis.db=WARN

  20log4j.logger.org.apache.velocity=FATAL

  21

  22.canoo.webtest=WARN

  23

  24log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

  25log4j.logger.org.hibernate=DEBUG

  26log4j.logger.org.logicalcobwebs=WARN

  第三步:

相应的修改其中属性,修改之前就必须知道这些都是干什么的,在第二部分讲解。

  第四步:

在要输出日志的类中加入相关语句:

定义属性:

protectedfinalLoglog=LogFactory.getLog(getClass());

  在相应的方法中:

  if(log.isDebugEnabled()){

  log.debug(“System…..”);

  }

 

--------------------2010年04月23日

李国利

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1