Comment puis-je correctement Log4j, en fermant tous les Appenders et, par conséquent, les fichiers
Ma servlet web app, parfois, ne parvient pas à fermer Log4j fichiers journaux lorsque redéployés, les fuites de descripteurs de fichiers de fuite et de temps en temps conduisant à servlet-contenus en train de mourir d'un trop grand nombre d'ouvrir les fichiers".
J'ai un ContextListener, que dois-je mettre dans son contextDestroyed() pour dire log4j pour arrêter et libérer toutes les ressources?
Rapide écrémé en plus de la documentation javadoc a révélé Hierachery classe avec arrêt (). Je n'ai aucune idée sur la façon d'obtenir effectivement le courant Hierachery, et la javadoc membres de cette classe n'a pas remplaçable par l'utilisateur, les composants à l'intérieur 🙂
source d'informationauteur alamar
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Cependant, le problème que vous rencontrez est étrange et ne devrait pas se produire. Ce JVM, conteneur, log4j version utilisez-vous?
J'ai eu le même problème, mais ma solution en deux étapes:
D'abord, j'ai dû appeler
LogManager.shutdown()
de servletsdestroy()
méthode.Ensuite, j'ai dû fixer le
close()
la méthode de notre propre Appender de mise en œuvre (qui est une sous-classe deAppenderSkeleton
), de sorte qu'elle se ferme correctement les appenders degetAllAppenders()
.