初始化的Servlet: import org.apache.log4j.PropertyConfigurator; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * log4j.jar的初始化类,参考web.xml */ public class Log4jInit extends HttpServlet { public void init() { //通过web.xml来动态取得配置文件 String prefix = getServletContext().getRealPath("/"); String file = getInitParameter("log4j-init-file"); // 如果没有给出相应的配置文件,则不进行初始化 if(file != null) { PropertyConfigurator.configure(prefix+file); //(1) } } public void doGet(HttpServletRequest req, HttpServletResponse res) {} } 下面来看一下这个Servlet在web.xml中的定义。 例2: <servlet> <servlet-name>log4j-init</servlet-name> <servlet-class>TestLog4j.Log4jInit</servlet-class> <init-param> <param-name>log4j-init-file</param-name> <param-value>sort.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 因为log4j的初始化要在所有的log4j调用之前完成,所以在web.xml文件中,我们一定要把对应的Servlet定义的load-on-startup应设为1,以便在Web容器启动时即装入该Servlet。 完成了这两个步骤这后,我们就可以象在application开发中一样在web application任何地方应用log4j了。下面是在javabean中的应用的一个例子。 例3: import org.apache.log4j.Logger; public class InfoForm { static Logger logger = Logger.getLogger(InfoForm.class); protected String title; protected String content; public InfoForm() {} public void setTitle(Object value) { logger.debug("nepalon:title = " + title); title = value; } public String getTitle() { logger.debug("nepalon:title = " + title); return title; } public void setContent(String value) { content = value; logger.debug("nepalon: content() = " + content); } public String getContent() { logger.debug("nepalon: content = " + content); return content; } }