Внешний файл log4j.xml для WAR

Требование это ...

Один вопрос: обычное место, кажется, находится в вашем каталоге / WEB-INF / classes, но у меня проблемы с этим. Если я отправлю свое приложение в виде файла WAR, я не смогу его отредактировать, что является реальная проблема.

У нас есть 3 WAR, приложения мы развернули с tomcat 6.0.16. Мы хотим настроить log4j.xml во внешнем каталоге для каждой войны и загружать оттуда динамически.

Я действительно не хочу использовать этот параметр env "-Dlog4j.configuration = / Directory / log4j.xml" в качестве решения. Потому что он станет по умолчанию, а не для WAR.

Какие-либо предложения? Любая помощь приветствуется ...


person bubesh    schedule 14.09.2010    source источник


Ответы (1)


Я знаю, что вы упомянули, что не хотите использовать параметр запуска "-Dlog4j.configuration = / Directory / log4j.xml", но рассматривали ли вы возможность использования настраиваемого параметра, например

-DappOneLog4jConfig=/directoy/file1.xml
-DappTwoLog4jconfig=/directory/file2.xml

А затем в каждый из ваших файлов войны вы можете загрузить нужный файл log4j. Вы можете сделать что-то подобное в классе, который загружается при запуске.

if(System.getProperty("appOneLog4jConfig") != null){
      PropertyConfigurator.configure(System.getProperty("appOneLog4jConfig"));
} else {
      BasicConfigurator.configure();
      Logger.getRootLogger().setLevel(Level.INFO);
}

который говорит, что если у меня указан файл свойств, используйте его. в противном случае по умолчанию все равно Info. Это должно дать вам свободу устанавливать файл log4j для каждого файла приложения / войны.

person Sean    schedule 14.09.2010
comment
Да, я знаю, что он работает нормально, но какова общая передовая практика для конфигурации log4j для нескольких веб-приложений. Что я действительно хочу, так это то, что у меня есть файл log4j.xml для веб-приложений, упакованный в моих войнах (без appender), а общий log4j.xml помещается на уровне @ tomcat с помощью appender, когда приходит журнал webapp1, он должен регистрироваться с помощью app1.log и для во-вторых, он должен быть зарегистрирован с помощью app2.log. У меня есть context.xml для каждого веб-приложения, есть ли способ установить параметр для конкретного значения приложения и получить значение в log4j.xml верхнего уровня, как это ‹имя параметра = значение файла = $ {catalina.home} / logs / $ {webapp-name} /warn.log/ ›????? - person bubesh; 16.09.2010