aldream

BlogJava 首页 新随笔 联系 聚合 管理
  1 Posts :: 10 Stories :: 1 Comments :: 0 Trackbacks
在Web 应用中,应该在哪儿对Log4J进行配置呢?首先要明确,Log4J必须在应用的其它代码执行前完成初始化。因为Servlet 是在Web服务器启动时立即装入的,所以,在Web应用中一般使用一个专门的Servlet来完成Log4J的配置,并保证在web.xml的配置中,这 个Servlet位于其它Servlet之前。下面是一个例子,代码如下:
servlet内容:
 1package com.foo;
 2 
 3import org.apache.log4j.PropertyConfigurator;
 4import javax.servlet.http.HttpServlet;
 5import javax.servlet.http.HttpServletRequest;
 6import javax.servlet.http.HttpServletResponse;
 7import java.io.PrintWriter;
 8import java.io.IOException;
 9 
10public class Log4jInit extends HttpServlet {
11 
12  public
13  void init() {
14    String prefix =  getServletContext().getRealPath("/"); //get webapp root path
15    String file = getInitParameter("log4j-init-file");
16    // if the log4j-init-file is not set, then no point in trying
17    if(file != null{
18      PropertyConfigurator.configure(prefix+file);
19    }

20  }

21 
22  public
23  void doGet(HttpServletRequest req, HttpServletResponse res) {
24  }

25}

26
在web.xml 中添加:
<servlet> 
<servlet-name>log4jinit</servlet-name> 
<servlet-class>log4j.Log4JInit</servlet-class> 
<init-param> 
<param-name> log4j-init-file </param-name> 
<param-value>\properties\log4j.properties</param-value> //项目物理相对路径
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet>
注意:上面的load-on-startup应设为1,以便在Web容器启动时即装入该Servlet。log4j.properties文件放在根的properties子目录中,也可以把它放在其它目录中。应该把.properties文件集中存放,这样方便管理。

一个还没解决的问题:
当启动tomcat的时候,会出现以下信息:

log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
但不影响log4j的使用。
posted on 2007-11-10 02:06 aldream 阅读(1125) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: