在Web應用程序中,我使用log4j。
我使用了一個shutdown
鉤終止日誌管理器:關閉tomcat時,Log4j中的這個異常是什麼?
Runtime.getRuntime().addShutdownHook(new Thread(){
@Override
public void run(){
LogManager.shutdown();
}
});
當Tomcat關閉我看到catalina.out中
以下異常是什麼意思?有什麼問題,我該如何解決它?
INFO: Illegal access: this web application instance has been stopped
already. Could not load org.apache.log4j.helpers.NullEnumeration.
The eventual following stack trace is caused by an error thrown for
debugging purposes as well as to attempt to terminate the thread which
caused the illegal access, and has no functional impact. Throwable
occurred: java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1587)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
at org.apache.log4j.Category.getAllAppenders(Category.java:413)
at org.apache.log4j.Category.closeNestedAppenders(Category.java:226)
at org.apache.log4j.Hierarchy.shutdown(Hierarchy.java:467)
at org.apache.log4j.LogManager.shutdown(LogManager.java:267)
at com.MyLog4jStarter$1.run(Log4JStarterListener.java:133) Exception in thread "Thread-11" java.lang.NoClassDefFoundError:
org.apache.log4j.helpers.NullEnumeration
at org.apache.log4j.Category.getAllAppenders(Category.java:413)
at org.apache.log4j.Category.closeNestedAppenders(Category.java:226)
at org.apache.log4j.Hierarchy.shutdown(Hierarchy.java:467)
at org.apache.log4j.LogManager.shutdown(LogManager.java:267)
at de.siemens.icn.hipath.dls.listeners.Log4JInitListener$1.run(Log4JInitListener.java:42)
Caused by: java.lang.ClassNotFoundException:
org.apache.log4j.helpers.NullEnumeration
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
啊!!!我在' ServletContextListener',但在'contextInitialized'不在'contextDestroyed'中 – Jim 2012-02-28 12:57:37
因此關閉掛鉤轉到'contextDestroyed'? – Jim 2012-02-28 13:12:23
通常是的,除非你有一些特殊的需求。 – mindas 2012-02-28 13:17:49