Журнал Commons только идет в системные журналы в WAS 6.1 - PullRequest
0 голосов
/ 08 октября 2010

Я пытаюсь использовать обыкновенную регистрацию с log4j для записи журналов моего приложения в файл, но мои журналы продолжают поступать в SystemOut.log. Файл журнала действительно создан, но он пуст.

Вот мои log4j.properties и commons-logging.properties (оба должны быть в classpath - они находятся в WEB-INF / classes)

WEB-INF / classes / log4j.properties:

log4j.rootLogger=INFO, AppLogAppender
log4j.logger.org.apache.struts2.util.TextProviderHelper=ERROR, AppLogAppender
log4j.logger.com.wawanesa=DEBUG, AppLogAppender

# AppLogAppender
log4j.appender.AppLogAppender=org.apache.log4j.FileAppender
log4j.appender.AppLogAppender.File=/waslogs/applogs/us.log

log4j.appender.AppLogAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.AppLogAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

WEB-INF / классы / commons-logging.properties:

priority=1
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl

У меня есть log4j.jar и commons-logging.jar в моем classpath приложения. Я видел проблему с загрузчиком классов в was6.0, где вы должны сделать его «app first», но я не вижу никаких классов comms-logging базовый путь к классу Websphere в представлениях загрузчика классов.

Ответы [ 3 ]

1 голос
/ 19 октября 2010

Проблема в этом заключается в том, что сама WebSphere использует обычное ведение журнала, поэтому происходит выбор файла общих свойств ведения журнала сервера приложений.Попробуйте изменить порядок загрузки классов для модуля на «Сначала загрузить классы приложений», это должно означать, что при запуске приложения оно захватывает свою собственную конфигурацию ведения журнала, а не серверы.

0 голосов
/ 22 июля 2016

Лучшим решением является использование JCL поверх SLF4J и моста Log4j. Это устранит необходимость в commons-logging.jar в развертываемом артефакте и не потребует смены загрузчика классов на последний родительский.

Подробная информация о JCL над SLF4J здесь http://www.slf4j.org/legacy.html

Используйте следующие зависимости maven для записи log4j в файл appender в WebSphere Application Server v8.5

<dependencies>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>4.3.1.RELEASE</version>
   <scope>runtime</scope>
   <exclusions>
     <exclusion>
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
     </exclusion>
   </exclusions>
 </dependency>
 <dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>jcl-over-slf4j</artifactId>
  <version>1.7.21</version>
  <scope>runtime</scope>
 </dependency>
 <dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.21</version>
  <scope>runtime</scope>
 </dependency>
 <dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.21</version>
  <scope>runtime</scope>
 </dependency>
 <dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
  <scope>runtime</scope>
 </dependency>

0 голосов
/ 10 октября 2010

Тот факт, что файл пуст, говорит нам о том, что действительно вызывается ваш собственный log4j.properties, а не какой-то другой log4j.properties / log4j.xml в пути к классам.Помните, что File Appenders в log4j спроектированы так, что выходной файл создается, как только инициализируется log4j - не дожидаясь появления первой строки журнала.

Теперь, я думаю, что вы пропустили это в вашем общемlogging.properties:

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

Если это не поможет, добавьте необходимое системное свойство в свой экземпляр WAS, чтобы активировать log4j в «режиме отладки» - имя свойства log4j.debug,значение true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...