log4j怎么用.doc_第1页
log4j怎么用.doc_第2页
log4j怎么用.doc_第3页
log4j怎么用.doc_第4页
log4j怎么用.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

log4j使用方法,与tomcat配置等整了半天还不大明白log4j怎么用,粘点改天学习。一:配置A:)在Web Application 中使用log4jStep 1:配置log4j配置文件=# Set root logger level to DEBUG and its only appender to A1#log4j中有五级logger#FATAL0#ERROR3#WARN4#INFO6#DEBUG7log4j.rootLogger=DEBUG, A1# A1 is set to be a ConsoleAppender.#log4j中Appender有几层#ConsoleAppender输出到控制台log4j.appender.A1=org.apache.log4j.ConsoleAppender# A1 uses PatternLayout.log4j.appender.A1.layout=org.apache.log4j.PatternLayout#输出格式 具体查看log4j javadoc org.apache.log4j.PatternLayout#d 时间 .log4j.appender.A1.layout.ConversionPattern=%-4r %t %-5p %c %x - %m%n=另外一种配置log4j.rootLogger=debug, stdout, Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout# Pattern to output the callers file name and line number.log4j.appender.stdout.layout.ConversionPattern=%5p %t (%F:%L) - %m%n#R 输出到文件log4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=example.loglog4j.appender.R.MaxFileSize=100KB# Keep one backup filelog4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=%p %t %c - %m%nStep 2:写启动的Servletpublic class InitServlet extends HttpServlet public void init() ServletContext sct = getServletContext();String prefix = sct.getRealPath(/);/log4j 配置文件存放目录System.out.println(.Log4j: The Root Path: + prefix);System.out.println(.Log4j: InitServlet init start.);String file = getInitParameter(log4j);/log4j 配置文件if (file != null) PropertyConfigurator.configure(prefix + file);/根据配置初始化log4jSystem.out.println(.Log4j: InitServlet Init Sucess.);public void doGet(HttpServletRequest req, HttpServletResponse res) public void doPost(HttpServletRequest req, HttpServletResponse res) B:在一般的IDE中使用log4j,因为使用log4j需要做一些初始化,在Web Application中这一部分初始化是有AppServer 启动是加载的。在IDE中,则我们在使用log4j之前需要自己配置一下。如下文件:public final class Lo4jTest private static String CLASS_NAME = com.bingo.test.Lo4jTest;private static Logger log = Logger.getLogger(CLASS_NAME);/在Web Application 中下面的pattern是在log4j的配置文件中配置的。/现在我们手动配置private static String pattern=%-4r %-t %p %c %x - %m%n;private static String pattern2=%-dyyyy-MM-dd HH:mm:ss %c-%p %m%n;/设置输出层/private static ConsoleAppender consAppender =new ConsoleAppender(new PatternLayout(pattern2);public static void main(String args) /配置log4jBasicConfigurator.configure(consAppender);/ void configure(Appender appender);/ void configure();/配置时log4j提供了两种方式/后一种比较简单,输出的信息不够详细/我们可以使用前一种输出我们希望的格式log.debug(Log4j Debug.);log.error(Log4j Error.);(Log4j Info.);log.fatal(Log4j Fatal.);/使用pattern2上面的输出结果如下2002-08-30 13:49:09 com.bingo.test.Lo4jTest-DEBUG Log4j Debug.2002-08-30 13:49:09 com.bingo.test.Lo4jTest-ERROR Log4j Error.2002-08-30 13:49:09 com.bingo.test.Lo4jTest-INFO Log4j Info.2002-08-30 13:49:09 com.bingo.test.Lo4jTest-FATAL Log4j Fatal./假如我们使用pattern输出如下:0 main DEBUG com.bingo.test.Lo4jTest - Log4j Debug.0 main ERROR com.bingo.test.Lo4jTest - Log4j Error.0 main INFO com.bingo.test.Lo4jTest - Log4j Info.0 main FATAL com.bingo.test.Lo4jTest - Log4j Fatal.二:使用log4j在实际使用过程中其实非常简单1:)如下定义log,在log4j1.2以前使用Category,log4j1.2以后使用Logger代替private static String CLASS_NAME = com.bingo.test.Lo4jTest;/log4j1.2private static Logger log = Logger.getLogger(CLASS_NAME);/lo4j1.2以前private static Category log =Category.getInstance(CLASS_NAME);/取得一个Category or Logger有几种方式,根据自己需要使用2:)写日志log.debug(Log4j Debug.);log.error(Log4j Error.);(Log4j Info.);log.fatal(Log4j Fatal.);/void debug(Object message)/Log a message object with the DEBUG level./void debug(Object message, Throwable t)/Log a message object with the DEBUG level including the/stack trace of the Throwable t passed as parameter.三:注意事项1:在具体使用中注意不同的信息使用不同的log方式,选择debug,error,info,fatal中的一种,以后可以根据需要屏蔽部分输出2:开发过程中尽量输出到控制台,运行过程中则修改配置使其输出到文件.3:定义log尽量使用文件名作为参数,这样容易查找错误. 以下是与Tomcat交互的:log4j的介绍(一)log4j与tomcat结合的简单配置 log4j 是apache和ibm联合弄得一个应用系统日志管理工具,利用它的api可以方便的管理和操纵日志。在调试程序的时候,是一个非常不错的调试帮手。有关 log4j的一些介绍,大家可以参考apache的网站(/log4j/docs /index.html) 下面在开始介绍以前,首先推荐一点资料,大家看看,有助于了解。 (1)Log4j delivers control over logging/developerworks/java/library/jw-log4j/ (2)/log4j/docs/api/org/apache/log4j/PatternLayout.html 这里面介绍了有关layout.ConversionPattern中的转意字符的含义。 (一)与tomcat结合的简单配置 首先到 /log4j/docs/download.html 下载一 个log4j,目前版本是1.2.5。下载的文件中有详细的介绍和实例、apidoc,可以参考一下。 将log4j-1.2.5.jar的放到系统classpath中。最好在%tomca_home%/lib/也方一份更好哦。(在此注意一个问题,据说log4j-1.2.5.jar这个文件的文件名,weblogic6.1不能识别,需要改一个名字) 1.1描写properties文件。 这 个描述文件一般放在可以放在两个地方:(1)WEB-INF/classes目录下,或者放在在/project_root/,也就是你的web_app 的根目录下。利用这个控制日志纪录的配置,当然也可以通过xml文件配置,这里我们暂且说说properties的配置。 建立文件名perties文件。放在%tomca_home%/web_app/fcxtest/目录下。 文件内容如下:(fcxtest为自己建立的web app目录) #- # 设定logger的root level为DEBUG,指定的输出目的地(appender)为A1 log4j.rootLogger=DEBUG, A1 # 设定调试信息的输出位置,此处设定输出为控制台 log4j.appender.A1=org.apache.log4j.ConsoleAppender # 设定调试信息的输出位置,此处设定输出为fcxtest.log文件 # log4j.appender.A1=org.apache.log4j.RollingFileAppender # log4j.appender.A1.File=fcxtest.log # log4j.appender.A1.MaxFileSize=1000KB # 设定制定的A1使用的PatternLayout. # 有关ConversionPattern中的转意字符的含义参考说明 log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d %-5p %t %C2 (%F:%L) - %m%n #- 1.2建立测试用的Servlet类 这个测试的com.fcxlog.LogShow类主要是显示如何使用log4j。 package com.fcxlog; import javax.servlet.*; import javax.servlet.http.*; import org.apache.log4j.Logger; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.PropertyConfigurator; public class LogShow extends javax.servlet.http.HttpServlet protected String configfile = perties; public void init() throws ServletException ServletContext sct = getServletContext(); System.out.println(Log4j: The Root Path: + sct.getRealPath(/); /指定自己的properties文件 /以前使用的是BasicConfigurator.configure(),现在使用PropertyConfigurator替代 org.apache.log4j.PropertyConfigurator.configure(sct.getRealPath(/) + configfile); public void service(javax.servlet.http.HttpServletRequest req,javax.servlet.http.HttpServletResponse res) /初始化Logger,以前使用Category,现在改用Logger替代 /org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(LogShow.class); org.apache.log4j.Logger log = ora.apache.log4j.Logger.getLogger(LogShow.class); (调试信息); 1.3 测试了 至于如何测试,发布,就不说了。 在此说明: (1)本篇可能错误不少,一方面是参考Short introduction to log4j着翻译了一点,有诸多言辞不妥之处,还望指正。一方面,凭借自己的理解,所以难免有不全的地方,还望各位补充。 (2)因为时间有限,每天只能写一点,本文主要是介绍有关Logger及Logger level相关概念的 (3)有关Log4j介绍(一),请参阅:/bbs/cgi-bin/topic.cgi?forum=1&topic=12766&show=0#lastviewpost 概述: 本文主要是简要的介绍了Log4j的api,以及其一些特征和设计原理。它本身是一个开源的软件,允许开发者任意的操纵应用系统日志信息。Log4j的使用通过外部配置文件进行配置。 任 何大型应用系统都有其自己的系统日志管理或跟踪的API,所以在1996年的时候,E.U. SEMPER项目组(/)也开发其自己的日志管理API,后来经过无数次的修改和补充,发展成了现在的 log4j,一个给予java的日志管理工具包。有关最新的版本信息和源码,请访问/log4j /docs/index.html 把纪录语句放在代码之中,是一种低端的调试方法,不过有时却不得不说是很有效,也是必需的。毕竟很多时候, 调试器并不见得很适用。特别是在多线程应用程序(multithread application)或分布式应用程序(distributed application) 经验告诉我们,在软件开发生命周期中,日志系统是一个非常重要的组件。当然,日志系统也有其自身的问题,过多的日志纪录会降低系统运行的速度。 (一)Log4j的三个重要组件 Loggers, Appenders, Layouts 这三个组件协同的工作,使得开发者能够依据信息类别和级别去纪录信息,并能够运行期间,控制信息记录的方式已经日志存放地点。 (二)记录器层次(Logger hierarchy) 几 乎任何纪录日志的API得功能都超越了简单的System.out.print语句。允许有选择控制的输出日志信息,也就是说,某的时候,一些日志信息允 许输出,而另一些则不允许输出。这就假设日志纪录信息之间是有分别的,根据开发者自己定义的选择标准,可以对日志信息加以分类。 纪录 器的命名是依据实体的。下面有一段有点绕口的解释,我就直抄了,各位可以看看:(Name Hierarchy)A logger is said to be an ancestor of another logger if its name followed by a dot is a prefix of the descendant logger name. A logger is said to be a parent of a child logger if there are no ancestors between itself and the descendant logger. (形象的解释,比如存在记录器 a.b.c,记录器a.b,记录器a。那么a就是a.b的ancestor,而a.b就是a.b.c的parent,而a.b.c就是a.b的child) 根 纪录器(root logger)是记录器层次的顶端。它有两个独特点:(1)总是存在的(2)能够被重新找回。可以通过访问类的静态方法 Logger.getRootLogger 重新得到。其他的纪录器通过访问静态方法 Logger.getLogger 被实例话或被得到,这个方法将希望获得的记录器的名称作为参数。一些Logger类的方法描述如下: public class Logger / Creation & retrieval methods: public static Logger getRootLogger(); public static Logger getLogger(String name); / printing methods: public void debug(Object message); public void info(Object message); public void warn(Object message); public void error(Object message); public void fatal(Object message); / generic printing method: public void log(Level l, Object message); 记录器被赋予级别,这里有一套预定的级别标准:DEBUG, INFO, WARN, ERROR and FATAL ,这些是在 org.apache.log4j.Level 定义的。你可以通过继承Level类定义自己的级别标准,虽然并不鼓励这么做。 如 果给定的记录器没有被赋予级别,则其会从离其最近的拥有级别的ancestor处继承得到。如果ancestor也没有被赋予级别,那么就从根记录器继 承。所以通常情况下,为了让所有的记录器最终都能够被赋予级别,跟记录器都会被预先设定级别的。比如我们在操作properties文件中,会写这么一 句:log4j.rootLogger=DEBUG, A1 。实际上就这就指定了root Logger和root Logger level。 Appenders Log4j 允许记录信息被打印到多个输出目的地,一个输出目的地叫做Appender。目前的Log4j存在的输出目的地包括:控制台(Console),文件 (File),GUI Componennt,Remote Socket Server,JMS,NT Event Logger,and Remote Unix Syslog daemons。 多个Appender可以绑定到一个记录器上(Logger)。 通过方法 addAppender(Logger.addAppender) 可以将一个Appender附加到一个记录器上。每一个有效的发送到特定的记录器的记录请求都被转送到那个与当前记录器所绑定的Appender 上。(Each enabled logging request for a given lo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论