2009-10-02 2 views
0

Есть ли правильный способ использования Log4j logger с Common ClassLoader, а не с ClassLoader на основе Web-приложений, т. Е. Использовать только один log4j.jar для всех развернутых веб-приложений? Когда я бросаю log4j.jar в каталог commons lib, log4j получает первое loj4j.properties для любого приложения и использует только его. Все остальные loj4j.properties (других приложений) игнорируются. Есть ли способ сказать log4j для возврата отдельной фабрики журналов для каждого приложения с их свойствами?Одиночный Log4j между Tomcat6 webapps

ответ

1

Не так, как я полагаю, вы имеете в виду, потому что каждый регистратор webapp должен быть полностью независим от регистраторов в других webapps. Поскольку репозитории регистрации являются одиночными, это можно сделать, только если они обрабатываются отдельными загрузчиками классов, то есть загрузчиками класса webapp.

Также обратите внимание, что в целом (хотя это может и не быть для вас) разные веб-приложения имеют разные жизненные циклы, что означает, что Tomcat, возможно, придется поддерживать webapp A, используя одну версию log4j одновременно с webapp B, который использует другую версию log4j.

+0

Да, я полностью согласен, кроме одного. Я принимаю около 60 webapps на одном экземпляре tomcat, и когда каждый webapp загружает отдельный экземпляр log4j - я получаю проблему с пространством PermGen. Сервер имеет только 512 МБ памяти :( –