log4j с LifeRay и Tomcat - PullRequest
       54

log4j с LifeRay и Tomcat

2 голосов
/ 19 апреля 2011

У меня есть установка Liferay на Tomcat6.Изначально я использовал Log4j для портлетов / веб-приложений, добавив файл log4j.properties в папку классов и файл log4j.jar в web-inf / lib.

Теперь у нас есть несколько кварцевых заданий, которые доступны в папке tomcat / lib, и я хочу включить log4j для этих заданий.

Для этих кварцевых заданий я скопировал тот же файл log4j.properties в tomcat / lib.

В новой конфигурации я получаю следующую ошибку:

Could not instantiate appender named "JOBS"
A "org.apache.log4j.RollingFileAppender" is not assignable a "org.apache.log4j.Appender" variable.
The class "org.apache.log4j.Appender" was loaded by ...

Как удалить эту ошибку?

Можно ли как-нибудь сохранить один файл log4j.properties, который может использоваться как общими / lib, так и портлетами / веб-приложениями.

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Известная проблема в Liferay: http://issues.liferay.com/browse/LPS-9376

В моем случае проблема возникла после того, как я начал использовать сервисы ServiceBuilder и добавил Log4J Logger в один из моих ... классов LocalServiceImpl.После того, как я удалил журналирование Log4J оттуда, все вернулось к норме - исключение исчезло.

(я заставил сервисные методы генерировать исключения и перехватывал их в коде, не связанном с классами чтения / генерации ServiceBuilder, но это также моглоэто можно сделать, изменив вызовы Log4J на LogGtil в Liferay.

1 голос
/ 02 июня 2011

Согласно этому сообщению проблема в том, что вы настроили свой log4j дважды.

Мое решение состояло бы в том, чтобы вы создали экземпляр регистратора, подобный этому

private static Logger logger = Logger.getLogger (FooBar.class.getName ());

и не иметь log4j.properties в любой папке lib или class, а в папке с именем resources.

AFAIK, это должно быть место, к которому обе части вашего приложения могут иметь доступ.

...