Topic: 请问在 servlet中init log4j为什么不行!

  Print this page

1.请问在 servlet中init log4j为什么不行! Copy to clipboard
Posted by: rocky2
Posted on: 2004-05-21 08:27

InitLog4j.java是这样的:    
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4j");
System.out.println("................log4j start");
if(file != null) {
System.out.println(prefix+file);
//PropertyConfigurator.configure(prefix+file);
org.apache.log4j.PropertyConfigurator.configure(prefix+file);
}
}

但是每次PropertyConfigurator.configure(prefix+file);都不执行!
log文件的错误是这样的:

java.lang.NoClassDefFoundError: org/apache/log4j/PropertyConfigurator
  at rocky.Log4jInit.init(Log4jInit.java:16)
  at javax.servlet.GenericServlet.init(GenericServlet.java:256)
  at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935)
  at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:823)
  at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3420)
  at org.apache.catalina.core.StandardContext.start(StandardContext.java:3608)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
  at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
  at org.apache.catalina.core.StandardService.start(StandardService.java:497)
  at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
  at org.apache.catalina.startup.Catalina.start(Catalina.java:512)
  at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
  at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:324)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)

但是我已经将log4j.jar文件加进来了,我的是Eclipse,编译时没有报错!

我搞两天了!真是郁闷!
另外 我在JB9.0是可以的。

2.Re:请问在 servlet中init log4j为什么不行! [Re: rocky2] Copy to clipboard
Posted by: dearmeiw
Posted on: 2004-05-21 23:30

只加一个LOG4J.JAR是不够的,因为要把日志信息写到哪是不由这个LOG4G.JAR包来决定的,这个应该还一个相对应的配配置文件的,所以你的会在PropertyConfigurator.configure时出错,读不到环境!

3.Re:请问在 servlet中init log4j为什么不行! [Re: rocky2] Copy to clipboard
Posted by: rocky2
Posted on: 2004-05-22 16:11

Smile:这个问题已经搞定,是要将log4j-1.28.jar放到WEB-INF下面的lib中,
但是为什么要这样做,还是不理解。我把其放到classpath中都是没有用的。

4.Re:请问在 servlet中init log4j为什么不行! [Re: rocky2] Copy to clipboard
Posted by: harvshen
Posted on: 2004-05-22 22:40

这个是使用log4j时需要特别注意的一个问题,也不能说是bug. 通常web
application是单独用一个class loader的,不同的container有不同的实现方式。

如果你的log4j在web application里使用,最好放在WEB-INF/lib下面,这样就不会发生class not found问题。

5.Re:请问在 servlet中init log4j为什么不行! [Re: rocky2] Copy to clipboard
Posted by: floater
Posted on: 2004-05-23 07:52

<b>read</b> j2ee doc, that's the j2ee standard.


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923