2009-04-01 1 views
5

При развертывании моего OSGi веб-приложения с помощью equinox servlet bridge я получаю следующее:Как настроить Log4J при развертывании приложения OSGi с помощью моста для сервопривода Equinox для Tomcat?

log4j:WARN No appenders could be found for logger (org.springframework.osgi.extender.internal.activator.ContextLoaderListener). 
log4j:WARN Please initialize the log4j system properly. 

Я попробовал несколько способов подачи необходимых «log4j.properties» файл, в том числе:

  • добавляющие context- param "log4jConfigLocation" на сервлет-мост web.xml
  • создание папки «classes» в папке WEB-INF и копирование моего файла log4j.properties (и копирование ее в нескольких других местах)
  • удалив мой лог4jj пакет и установив «extendedFrameworkExports» в org.apache.log4j, поэтому (я думаю) используется tomcat log4j ... это не сработало, потому что моим зависимостям нужны некоторые классы slf4j, которые предоставляются как фрагмент для пакета log4j ... что там больше нет ...

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

ADDED: Я должен добавить, что я разрабатываю приложение в Eclipse ... и там работает мой фрагмент, который настраивает log4j/slf4j.

Кто-нибудь решил это? Есть идеи?

ответ

3

Я нашел свою ошибку. Фрагмент, который должен предоставить файл log4j.properties, не включал его, потому что я не добавлял его в двоичную сборку в build.properties.

2

UPDATE: Это не реально помочь с вашим вопросом ...

Я просто исследовать OSGi сам.

Не совсем то, что вы ищете, но следующее post обсуждает ту же проблему при использовании равноденствия ванили (то есть: не размещается в tomcat/jetty).

Предлагается создать «фрагментный комплект» (пример доступен для загрузки) для хранения ваших лог4j.properties. Возможно, вы могли бы попробовать что-то подобное?

Возможно, вам просто нужно разместить log4j.properties внутри META-INF вашей ВОЙНЫ?

+0

1. Подход фрагментации, который вы обычно используете, по-видимому, не работает, когда вы развертываете приложение в tomcat как .war. 2. У моей войны еще нет папки META-INF, но я попробовал, и она тоже не работает (я пробовал все существующие папки, такие как WEB-INF, WEB-INF/eclipse, ...) – arturh

+0

извините, я не мог больше помочь. – toolkit

3

Спасибо arturh. Я была такая же проблема. Я добавил log4j.properties в папку my/src.

+1

После этого у меня возникла следующая проблема, когда, хотя мои пакеты приложений регистрировались через фрагмент конфигурации log4j успешно, других пакетов не было. Решение заключалось в том, чтобы гарантировать, что эти пакеты имеют org.apache.log4j в свой атрибут «Import-Package:», хотя им явно не нужен импорт для компиляции. Затем они обнаружили файл log4j.properties через фрагмент, размещенный в пакете log4j. – nevh

+0

Спасибо за подсказку! Рад, что я могу помочь. – arturh

Смежные вопросы