网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Java编程 >> 文章正文
  使用log4j建立灵活的log机制 - 2            【字体:
使用log4j建立灵活的log机制 - 2
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-2    

原文地址http://www.onjava.com/pub/a/onjava/2002/08/07/log4j.html?page=2

by Vikram Goyal
08/07/2002

一个简单的log4j的例子

这个应用拥有五个servlet(SetupServlet , LogonServlet, GetCommentsServlet, ForgotPasswordServlet, RegisterServlet) 4JSP;和一个文件的数据库用来存储用户信息(userDB,应该位于web-inf目录下,确保web.xml文件中填写的是正确的路径)

来看一个实际运行的例子,把log4j demo.war文件部署到你的servlet环境中。
正在装载数据……
然后,修改web.xml文件确保其中的参数都真实有效。这个文件位置在所部署的应用的web-inf目录下(另外三个配置文件也一样:config-JDBC,config-MDC,config-NDC)。重起你的服务,启动中会输出一些信息。如果StartupServlet可以找到userDB的话,你将会在屏幕上看到下面的信息

Using properties file:

C:\jakarta-tomcat-4.0.1\webapps\Log4JDemo\WEB-INF\config-simple.properties

  Watch is set to: null

  DEBUG - Added line: JohnDoe,herbert,johndoe@john.com,John Doe

前两行的输出是System.out.println打印出来的。其余的都是通过log4j.让我们这是怎么做到的。

用本文编辑工具打开config-simple.properties文件,其中有三行语句(除掉注释)。第一行,log4j.rootLogger=debug,R 设置rootLogger的等级是DEBUG.这一行是默认的,不一定必须要。逗号后的R是必须的,这样是为了告诉LOG4J root logger所对应的是这个名叫Rappender。下面的几行来定义这个appender的属性。

log4j.appender.R=org.apache.log4j.ConsoleAppender这一行定义appender R的类型是ConsoleAppender,简单来说就是这个appenderLOG将输出到命令行。log4j.appender.R.layout=org.apache.log4j.SimpleLayout定义这个appender使用的是simple layout:只输出两种信息:log请求的等级,和实际的输出信息。

Now that we have understood the configuration of our simple example, lets see how we are actually logging in our code. Open up SetupServlet.java in a text editor and look up line 81:

我们介绍了一个简单的配置的例子。现在让我们来看看我们的实际的log的代码。打开SetupServlet.java找到地81行。

 

PropertyConfigurator.configure(props);

 

暂时不要去管周围的代码。这行代码是让log4j找到相应的配置文件丛中获得属性。这行代码在你的应用中必须被调用一次,一般都是你的应用的开头位置。在 web 应用中Servlet 的启动代码是个合适的位置。

 

设置过我们的log4j属性后,我们就做好开始log的准备了。下一步我们要获取一个logger并且使用它来进行所需的log.我们既可以用Logger.getRootLogger()来获取root logger也可以象我们在SetupServlet中那样通过名字来获得一个logger实例。

 

Logger log = Logger.getLogger(SetupServlet.class);

 

这个方法返回了相对应的logger,我们可以使用它来进行log.例如我们在112行调用DEBUG方法:log.debug(“Add Line:”+data);实际运行时我们就可以在控制台看到输出了。注意这里我们的配置文件中root logger的等级为DEBUG我们并没有为demo.log4j.servlet.SetupServlet这个logger设置相应的等级它会自动的继承root logger的等级DEBUG,所以我们以上的调用会被送到appender中,试着把root logger的等级改为ERROR会发现之前的那些输出都不见了,这是因为logger的等级变的比实际的log请求的等级高。注意改变root logger的等级你只需要修改配置文件然后重新启动servlet环境就可以(虽然不是一定要重新启动servlet环境这涉及到configureAndWatch我们在后面会讨论这个内容)

 

 

我们已经了解了这个简单的例子。让我们重新整理一下这个例子中使用log4j所需要的几步操作

  1. 创建配置文件. 在文件中:
    • 设置root logger的等级,并为之设置appender.
    • 定义appender的属性.
    • 定义appenderlayout.
  2. 在程序代码中通过类名获取一个logger. 典型的做法是具体的类对应具体的logger.
  3. 在需要时调用以下log语句 (log.debug(), log.info(), log.warn(), log.error(), log.fatal()).

Management Requirements

虽然我们完成了一个相当简单的例子,并了解LOG4J的功能,我们的例子在实际应用中是显然不够的。现在让我站在你的老板的角度来指出这个例子的不足之处。

  • Log到控制台是没什么意义的,这使得必须要有一个人在出现重大问题的时候做记录。
  • SimpleLayout 太简单了.输出的信息太少。
  • web应用中。不同的用户在不同的servlet中产生了各种各样的log信息。要分辨不同用户的信息非常的困难。

第二个问题很简单,我们可以把SimpleLayout换成PatternLayout并且为它定义一个conversion pattern.

 


本文来源:http://blog.csdn.net/zw_errrun/archive/2007/08/02/1723259.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     用java实现web服务器
     用java快速开发linux gu…
     正则表达式分解siemens交…
     [portal参考手册]目录
     jsp中调用oracle存储过程…
  • 快速、简便使用AJAX技术的三…

  • weblogic 9.1的domain配置my…

  • 保留weblogic 中jsp编译后生…

  • Ant入门-配置和使用     选…

  • ant使用简介

  • java现状----编程使用的语言…

  • Cookie又见Cookie-使用Html…

  • 一个关于Comparator的使用例…

  • 关于JSP的隐式对象的使用(供…

  • 使用ICE遇到的编译问题

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David