Как настроить Log4J при развертывании приложения OSGi с помощью моста Servle Equinox в Tomcat? - PullRequest
5 голосов
/ 01 апреля 2009

При развертывании моего веб-приложения OSGi с использованием моста сервлета равноденствия я получаю следующее:

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", в том числе:

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

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

ДОБАВЛЕНО: Я должен добавить, что я разрабатываю приложение в Eclipse ... и там работает мой фрагментный пакет, который настраивает log4j / slf4j.

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

Ответы [ 3 ]

3 голосов
/ 02 апреля 2009

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

3 голосов
/ 27 апреля 2009

У меня была такая же проблема, и я добавил log4j.properties в мою папку /src.

2 голосов
/ 01 апреля 2009

ОБНОВЛЕНИЕ: Это действительно не помогает с вашей проблемой ...

Я сам исследую OSGi.

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

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

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

...