tomcat下通过初始化servlet来配置log4j的问题

任叔 2003-04-10 01:34:49
目前,启动tomcat时,信息如下:
==================================================================
Starting service Tomcat-Standalone
Apache Tomcat/4.0.4
ERROR reading java.io.ByteArrayInputStream@38bef7
At Line 13 /web-app/servlet/

Starting service Tomcat-Apache
Apache Tomcat/4.0.4
==================================================================

请问这可能是什么问题引起的?或者有什么其它办法配置log4j使我可以在web application项目的javabean及jsp页面中调用log4j

详细情况说明:
我的虚拟目录路径为e:\tomcat\webapps\dz2, dz2下的web.xml内容如下:
===============================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>dzlog4jinit</servlet-name>
<servlet-class>org.javaresearch.log4j.dzlog4jinit</servlet-class>
<init-param>
<param-name>log4jconfig</param-name>
<param-value>/log4j.properties</param-value>
</init-param>
<!-- Load this servlet at server startup time -->
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
==================================================================
e:\tomcat\webapps\dz2存放log4j.properties文件。
e:\tomcat\webapps\dz2\web-inf\classes\org\javaresearch\log4j下存放dzlog4jinit.class和dzlog4jinit.java文件,dzlog4jinit.java文件内容如下:
==================================================================
package org.javaresearch.log4j ;

import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.*;
import org.apache.log4j.* ;

public class dzlog4jinit extends HttpServlet
{
public void init () throws ServletException
{
String prefix = getServletContext ().getRealPath ( "/" ) ;
String file = getServletConfig ().getInitParameter ( "log4jconfig" ) ;
// 从Servlet参数读取log4j的配置文件
if ( file != null )
{
PropertyConfigurator.configure ( prefix + file ) ;
}
}

public void doGet ( HttpServletRequest request , HttpServletResponse response ) throws
IOException , ServletException
{}

public void doPost ( HttpServletRequest request , HttpServletResponse response ) throws
IOException , ServletException
{}
}
==================================================================
...全文
124 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
任叔 2003-04-11
  • 打赏
  • 举报
回复
就是说,上面的servlet本身应该已经正确的初始化log4j了?(我的log4j.proerties已经放到classes下了,名称、内容应该也没问题,况且现在用的basicconfigurey应该与配置文件无关了),可是当我打开jsp页面上调用使用log4j的javabean时仍然像没初始化一样的报错,不知为什么?
l_walker 2003-04-11
  • 打赏
  • 举报
回复
BasicConfigurator.configure();
将log信息抛掉了好像看不到了:)


把log4j.properties放到web-inf/classes下
任叔 2003-04-11
  • 打赏
  • 举报
回复
对不起大家,居然是因为我没把jar文件放到lib目录下!
再次感谢Brain和l_walker
任叔 2003-04-10
  • 打赏
  • 举报
回复
现在tomcat能启动了,但servlet似乎没有正常的初始化log4j,现在的servlet内容如下:
package org.javaresearch.log4j ;

import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;

import org.apache.log4j.* ;

public class Log4JInit extends HttpServlet
{
public void init () throws ServletException
{
try
{
String prefix = getServletContext ().getRealPath ( "/" ) ;
String file = getServletConfig ().getInitParameter ( "log4j-config-file" ) ;
// 从Servlet参数读取log4j的配置文件
System.out.println ( "read the file name: " + file + "." ) ;
if ( file != null )
{
System.out.println ( "prepare to configure." ) ;
BasicConfigurator.configure();
System.out.println ( "Configure file:" + file + " OK!" ) ;
}
} catch ( Exception e )
{
System.out.println ( e.getMessage() ) ;
}
}
}

屏幕上只输出到prepare to configure.就没有了,似乎是BasicConfigurator.configure();出错了,但System.out.println ( e.getMessage() );这一句并没有输出,这是为什么?
任叔 2003-04-10
  • 打赏
  • 举报
回复
是啊,只要加上web.xml这个文件整个站点就起不来了
Brain 2003-04-10
  • 打赏
  • 举报
回复
抱歉我不知道是什么

觉得是读某些属性时,出错。

是不是每次都这样报错。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧