我如何正确Log4j,关闭所有Appender,因此,关闭文件

ala*_*mar 15 java resources servlets log4j

我的基于servlet的Web应用程序有时无法在重新部署时关闭Log4j日志文件,泄漏到文件描述符泄漏,偶尔会导致从"太多打开的文件"中导致servlet包含的死亡.

我有一个ContextListener,我应该把它放在contextDestroyed()中告诉log4j关闭并释放所有资源?

快速浏览javadocs,发现Hierachery类有shutdown()方法.我不知道如何实际获得当前的Hierachery,而javadoc声明这个类里面没有用户可维护的组件:)

kgi*_*kis 19

试试这个:

org.apache.log4j.LogManager.shutdown();
Run Code Online (Sandbox Code Playgroud)

但是,您遇到的问题很奇怪,不应该发生.您使用的是什么JVM,容器,log4j版本?