Log4j总结文档.docx

上传人:b****5 文档编号:8230503 上传时间:2023-01-30 格式:DOCX 页数:10 大小:22.08KB
下载 相关 举报
Log4j总结文档.docx_第1页
第1页 / 共10页
Log4j总结文档.docx_第2页
第2页 / 共10页
Log4j总结文档.docx_第3页
第3页 / 共10页
Log4j总结文档.docx_第4页
第4页 / 共10页
Log4j总结文档.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Log4j总结文档.docx

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

Log4j总结文档.docx

Log4j总结文档

LOG4J

使用总结

 

目录

一、Log4j简介3

1.1log4j介绍3

1.2Log4j的获取3

二、在Eclipse中使用Log4j3

2.1在Eclipse中使用Log4j3

三、Log4j的配置文件4

3.1Log4j的配置文件4

3.2在代码中初始化Logger:

5

3.3为不同的Appender设置日志输出级别:

5

四、Log4j输出格式定义6

五、在Java类文件里使用Log4j7

5.1、Import需要的包文件7

5.2定义Logger对象7

5.3装载属性文件7

5.4、任何地方可以使用7

5.5一个普通的应用结构如下的内容:

8

附录:

Log4j常用配置(.properties和.xml)10

 

一、Log4j简介

1.1log4j介绍

Log4j中有三个主要的组件,它们分别是Logger、Appender和Layout,Log4j允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。

有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过Logger.getLogger(Stringname)方法。

  Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,如console、files、GUIcomponents、NTEventLoggers等,一个Logger可以拥有多个Appender,也就是你既可以将Log信息输出到屏幕,同时存储到一个文件中。

  Layout的作用是控制Log信息的输出方式,也就是格式化输出的信息。

  Log4j中将要输出的Log信息定义了5种级别,依次为DEBUG、INFO、WARN、ERROR和FATAL,当输出时,只有级别高过配置中规定的级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码,这点实在是方便啊。

1.2Log4j的获取

下载地址是:

http:

//logging.apache.org/site/binindex.cgi,我下载到的版本是:

logging-log4j-1.2.13.tar.gz,解压之后找到:

logging-log4j-1.2.13\logging-log4j-1.2.13\dist\lib目录下的log4j-1.2.13.jarr文件,这就是我们要用的jar文件了,其他文件暂时搁置不动。

把这个文件拷贝到指定位置,比如D:

\Lib目录下。

(待会我们会在应用程序工程中添加这个文件)。

二、在Eclipse中使用Log4j

2.1在Eclipse中使用Log4j

  2.1.1新建Java项目时引入

  第一种情况是在新建java项目时第二步骤选择【Libraries】-【AddExternalJARs…】选择log4j-1.2.13.jar,点击【打开】回到新建工程第二步骤的界面,点击完成。

这样就引入了需要的库文件了。

  2.1.2向已经存在工程添加log4j-1.2.13.jar

  如果工程已经存在,通过右击工程名称-【属性】-【java构建路径】-【添加外部JAR(X)】-选择log4j-1.2.13.jar,点击【打开】回到新建工程属性的界面-【确定】会到工程的界面。

  2.1.3导入Log4j.properties文件

  通过工程的导入功能,直接把Log4j.properties文件导入到与工程最高层的目录。

三、Log4j的配置文件

3.1Log4j的配置文件

Log4J配置文件的基本格式如下:

#配置根Logger

log4j.rootLogger = [level] , appenderName1, appenderName2, …

#配置日志信息输出目的地Appender

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

  log4j.appender.appenderName.option1 = value1 … 

  log4j.appender.appenderName.optionN = valueN 

#配置日志信息的格式(布局)

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

class

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

log4j.appender.appenderName.layout.optionN=valueN

 

其中[level]是日志输出级别,共有5级:

FATAL0

ERROR3

WARN4

INFO6

DEBUG7

Appender为日志输出目的地,Log4j提供的appender有以下几种:

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

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

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

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

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

Layout:

日志输出格式,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平台为“\r\n”,Unix平台为“\n”

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

%d{yyyMMMddHH:

mm:

ss,SSS},输出类似:

2002年10月18日22:

10:

28,921

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

举例:

Testlog4.main(TestLog4.java:

10)

3.2在代码中初始化Logger:

1)在程序中调用BasicConfigurator.configure()方法:

给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"%-4r[%t]%-5p%c%x-%m%n",还有根记录器的默认级别是Level.DEBUG.

2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置;

3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;

4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。

3.3为不同的Appender设置日志输出级别:

当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放在一个文件里的,如果日志输出的级别是BUG!

那就慢慢去找吧。

这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。

当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改Appender的Threshold就能实现,比如下面的例子:

[配置文件]

###setloglevels###

log4j.rootLogger=debug,stdout,D,E

###输出到控制台###

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

log4j.appender.stdout.Target=System.out

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

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p%c{1}:

%L-%m%n

###输出到日志文件###

log4j.appender.D=org.apache.log4j.DailyRollingFileAppender

log4j.appender.D.File=logs/log.log

log4j.appender.D.Append=true

log4j.appender.D.Threshold=DEBUG##输出DEBUG级别以上的日志

log4j.appender.D.layout=org.apache.log4j.PatternLayout

log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-ddHH:

mm:

ss}[%t:

%r]-[%p]%m%n

###保存异常信息到单独文件###

log4j.appender.D=org.apache.log4j.DailyRollingFileAppender

log4j.appender.D.File=logs/error.log##异常日志文件名

log4j.appender.D.Append=true

log4j.appender.D.Threshold=ERROR##只输出ERROR级别以上的日志!

!

!

log4j.appender.D.layout=org.apache.log4j.PatternLayout

log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-ddHH:

mm:

ss}[%t:

%r]-[%p]%m%n

[代码中使用]

publicclassTestLog4j{

publicstaticvoidmain(String[]args){

PropertyConfigurator.configure("D:

/Code/conf/log4j.properties");

Loggerlogger=Logger.getLogger(TestLog4j.class);

logger.debug("debug");

logger.error("error");

}

}

 四、Log4j输出格式定义

Log4j的格式定义是通过一个“.properties”文件定义的,该文件里面定义了很多关于数定格式和输出位置的元素,看看下面例子的.properties文件(例子中以Log4j.properties为名称)。

切换log4j.rootLogger=debug,B1的B1或是A1,以及注释不同位置,实现日志输出到文件还是控制台。

把这个Log4j.properties文件放置工程的最上层目录(与.jpx文件在同一目录)。

  Log4j.properties的内容:

  

  log4j.rootLogger=debug,B1

  #打印到文件

  #log4j.appender.A1=org.apache.log4j.RollingFileAppender

  #log4j.appender.A1.File=example.log

  #log4j.appender.A1.MaxFileSize=100KB

  #log4j.appender.A1.MaxBackupIndex=1

  #log4j.appender.A1.layout=org.apache.log4j.PatternLayout

  #log4j.appender.A1.layout.ConversionPattern=%5p[%t](%F:

%L)-%m%n

  #打印到控制台

  log4j.appender.B1=org.apache.log4j.ConsoleAppender

  log4j.appender.B1.layout=org.apache.log4j.PatternLayout

  log4j.appender.B1.layout.ConversionPattern=%-4r%-5p[%t]%37c%3x-%m%n

  log4j.appender.B1.layout.ConversionPattern=%5p[%t](%F:

%L)-%m%n

  五、在Java类文件里使用Log4j

  5.1、Import需要的包文件

  importorg.apache.log4j.*;把这个语句放置在文件的Import位置。

  5.2定义Logger对象

staticLoggerlogger=Logger.getLogger(Frame1.class.getName());在程序申明变量的地方定义这个对象,并且是静态对象。

其中的Frame1是你当前类的名称。

  5.3装载属性文件

PropertyConfigurator.configure("Log4j.properties");在jbInit()方法的开始填写这个语句,把属性文件装载过来。

  5.4、任何地方可以使用

  

在需要日志记录的地方输入类似

  logger.info("日志信息");

  logger.warn("日志信息");

  logger.debug("日志信息");

  logger.fatal("日志信息");

  logger.error("日志信息");

  比如:

  

  /**

  *主窗体组件初始化

  *@throwsjava.lang.Exception

  */

  privatevoidjbInit()throwsException{

  PropertyConfigurator.configure("Log4j.properties");

  logger.info(logonuser+"初始化开始");//logonuser是登陆系统的用户名称

  ……………….

  ……………….

  ………………

  logger.info(logonuser+"初始化结束");

  }

  输出结果是:

  

  INFO[AWT-EventQueue-0](mainFrame.java:

503)-Admin初始化开始INFO[AWT-EventQueue-0](mainFrame.java:

1013)-Admin初始化结束

  到这里我们就完成了Log4j在Eclipse中的应用过程,输出日志的格式是不是很整齐,输出到文件的测试一样的过程,只是在Log4j.properties改成:

  Log4j.properties的内容:

  log4j.rootLogger=debug,A1

  #打印到文件

  log4j.appender.A1=org.apache.log4j.RollingFileAppender

  log4j.appender.A1.File=example.log

  log4j.appender.A1.MaxFileSize=100KB

  log4j.appender.A1.MaxBackupIndex=1

  log4j.appender.A1.layout=org.apache.log4j.PatternLayout

  log4j.appender.A1.layout.ConversionPattern=%5p[%t](%F:

%L)-%m%n

  #打印到控制台

  #log4j.appender.B1=org.apache.log4j.ConsoleAppender

  #log4j.appender.B1.layout=org.apache.log4j.PatternLayout

  #log4j.appender.B1.layout.ConversionPattern=%-4r%-5p[%t]%37c%3x-%m%n

  #log4j.appender.B1.layout.ConversionPattern=%5p[%t](%F:

%L)-%m%n

  Log4j会在与Log4j.properties同目录的地方创建example.log文件,并记录日志信息,当文件的尺寸大于100KB时,log4J会创建一个新的example.log文件,同时备份example.log文件。

备份的文件个数取决于MaxBackupIndex属性。

  5.5一个普通的应用结构如下的内容:

  

  packagecom.log4j;

  importorg.apache.log4j.*;

  /**

  *@authorJem.lee

  */

  publicclassMyLogTest{

  

  staticLoggerlogger=Logger.getLogger(MyLogTest.class.getName());

  publicstaticvoidmain(String[]args){

  PropertyConfigurator.configure("Log4j.properties");

  MyLogTest.logger.info("测试信息开始");

  MyLogTest.logger.info("测试信息结束");

  }

  }

  输出结果

  INFO[main](MyLogTest.java:

16)-测试信息开始

  INFO[main](MyLogTest.java:

17)-测试信息结束

 

附录:

Log4j常用配置(.properties和.xml)

常用log4j配置,一般可以采用两种方式,.properties和.xml,下面举两个简单的例子:

一、log4j.properties

###设置org.zblog域对应的级别INFO,DEBUG,WARN,ERROR和输出地A1,A2##

log4j.category.org.zblog=ERROR,A1

log4j.category.org.zblog=INFO,A2

log4j.appender.A1=org.apache.log4j.ConsoleAppender

###设置输出地A1,为ConsoleAppender(控制台)##

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

###设置A1的输出布局格式PatterLayout,(可以灵活地指定布局模式)##

log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-ddHH:

mm:

ss,SSS}[%c]-[%p]%m%n

###配置日志输出的格式##

log4j.appender.A2=org.apache.log4j.RollingFileAppender

###设置输出地A2到文件(文件大小到达指定尺寸的时候产生一个新的文件)##

log4j.appender.A2.File=E:

/study/log4j/zhuwei.html

###文件位置##

log4j.appender.A2.MaxFileSize=500KB

###文件大小##

log4j.appender.A2.MaxBackupIndex=1

log4j.appender.A2.layout=org.apache.log4j.HTMLLayout

##指定采用html方式输出

二、log4j.xml

xmlversion="1.0"encoding="GB2312"?

>

DOCTYPElog4j:

configurationSYSTEM"log4j.dtd">

configurationxmlns:

log4j="http:

//jakarta.apache.org/log4j/">

--设置通道ID:

org.zblog.all和输出方式:

org.apache.log4j.RollingFileAppender-->

  

/study/log4j/all.output.log"/>

--设置File参数:

日志输出文件名-->

  

--设置是否在重新启动服务时,在原有日志的基础添加新日志-->

  

  

      

%L)-%m%n"/>

--设置输出文件项目和格式-->

  

  

/study/log4j/zhuwei.output.log"/>

  

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

当前位置:首页 > 表格模板 > 合同协议

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

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