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 :这个问题已经搞定,是要将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 |