Вход из Spring с использованием Log4j под WebSphere

Я использую log4j в моем приложении WebSphere. Мне нужно отладить класс org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor, поэтому я создал logger в моем файле log4j.xml:

<logger name="org.springframework">
    <level value="INFO" />
</logger>

<logger name="org.springframework.ejb.access">
    <level value="TRACE" />
</logger>

Я также создал commons-logging.properties в src/main/resources веб-проекта (в maven):

org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger

Тем не менее, Spring НЕ регистрируется с использованием log4j. Я не вижу журналов Springframework в моем файле отладки, но я вижу некоторые из них (INFO) в консоли. Поэтому я предполагаю, что протоколирование Apache Commons, используемое Spring, НЕ ведется с использованием log4j.

Можно ли (и как) перенаправить журналирование, используемое Spring, на движок Log4j под WebSphere?

WebSphere 7.0, Spring 3.1.2, log4j 1.2.6, регистрация общего доступа 1.1 в общей библиотеке.

2 ответа

Попробуйте следующее:

  1. Подумайте об использовании slf4j для вашей регистрации. Добавьте log4j к вашим зависимостям в maven.
  2. Добавьте jcl-over-slf4j к вашим зависимостям maven. Это перенаправляет каждый запрос с jcl на slf4j.
  3. Выполните поиск в журнале зависимостей внутри ваших зависимостей maven. Исключите его, чтобы он не попал в ваш архив развертывания.
  4. Удалите файл "commons-logging.properties".

Я надеюсь, что теперь все работает хорошо.

Этот метод для маршрутизации журналирования JCL (включая Spring) к вашей конфигурации log4j по- прежнему работает.

Для приложений, в которых у нас также есть slf4j (Spring WebFlow), они также могут быть перенаправлены в вашу конфигурацию log4j.

Однако, если вы просто хотите просмотреть информацию о журнале Spring, вы можете увеличить его уровень регистрации до собственных журналов WebSphere (SystemOut.log) через консоль. Troubleshooting > Logs and Trace > имя сервера> Change log level details,

Добавить что-то вроде : org.springframework.ejb.access.*=fine (двоеточие является разделителем).

Я не знаю, каковы точные уровни WAS, но fine, finer, а также finest перечислены в списке уровней "Трассировка", если развернуть область "Компоненты и группы", чтобы посмотреть, что доступно.

(Я не думаю, что имеет значение, что ваш конкретный пакет Spring не указан там, кстати. Я считаю, что он все еще должен успешно контролировать вашу регистрацию.)

Другие вопросы по тегам