Отключить логирование Axis log4j в jboss

У меня есть небольшое приложение, которое загружает изображения на другой веб-сайт через веб-сервис. Моя текущая проблема заключается в том, что Axis регистрирует все xml-сообщение (включая двоичные данные изображения!) Через STDOUT, и я не могу понять, как его отключить.

Мои настройки log4j для jboss (jboss-log4j.xml) включают приложение для обычных журналов STDOUT Info, и я попытался отключить ось с различными настройками категории:

<appender name="STDLOG" class="org.jboss.logging.appender.RollingFileAppender">
  <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
  <param name="File" value="${jboss.server.log.dir}/myapplication.log"/>
  <param name="Append" value="true"/>
    <param name="MaxFileSize" value="5MB"/>
    <param name="MaxBackupIndex" value="10"/>

    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
  </layout>
</appender>

используя эту настройку для STDOUT:

<category name="STDOUT">
  <priority value="DEBUG"/>
  <appender-ref ref="STDLOG"/>
</category>

Я попробовал эти настройки категорий без каких-либо изменений в результате:

<category name="log4j.logger.org.apache.axis" additivity="false">
  <priority value="ERROR"/>
</category>

<category name="org.apache.axis">
  <priority value="ERROR"/>
</category>

Некоторые примеры выходных данных журнала выглядят следующим образом:

2009-08-07 10:29:43,911 INFO  [STDOUT] (http-127.0.0.1-8080-1) =======================================================
= Elapsed: 2190 milliseconds
= In message: <?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <addVehicleImage xmlns="urn:VMgrWebService">
   <id xmlns="">APP-T4QKR3U</id>
   <idType xmlns="">chiffre</idType>
   <data xmlns="">9j4AAQSkZJRgABAQAAAQABAAD2wBDAAUDBAQEAwUEBAQFB
     QUGBww0TDMnrXAfKlLjnNJZcciiAOtqk9NG99qhZJKuyYq5k3G
     8P2bVSOpT7rVddRP2Z/yqidRuMMKaO2CXRQNWP2jfOo4S4Bo3W
   removed rest of image data...
     IBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGe1UqaZJJy0jSHPGQ
2009-08-07 10:29:43,927 INFO  [STDOUT] (http-127.0.0.1-8080-1) Upload result: true for image mypicture.JPG  

Обновление. Я проверил axis-1.4.jar, и там есть файл с именем simplelog.properties:

# Logging detail level,
# Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
org.apache.commons.logging.simplelog.defaultlog=info

Установка этого параметра на ошибку в банке или в качестве категории в jboss-log4j.xml вообще не помогла.

Кто-нибудь знает, как я могу отключить ведение журнала Axis или, по крайней мере, установить его на уровень ОШИБКИ?

Приветствую, Фрэнк


person FrankS    schedule 07.08.2009    source источник
comment
Какая это версия Axis?   -  person skaffman    schedule 07.08.2009


Ответы (5)


Это может быть немного поздно, но проблема, похоже, не в том, что ведение журнала выполняется в Axis (через System.out и Commons Logging), а в том, что LogHandler присутствует в цепочке обработчиков. Так регистрируется прошедшее время.

Вы можете отключить этот обработчик из файла конфигурации Axis (s) - server-config.wsdd и / или client-config.wsdd, в зависимости от того, используете ли вы Axis в качестве сервера или клиента.

Причина, по которой вы видите сообщения в консоли, вероятно, связана с тем, что для свойства LogHandler.writeToConsole установлено значение true. Если вы установите для LogHandler.writeToConsole значение false, он должен записывать в файл, как определено свойством LogHandler.fileName. По умолчанию имя файла - axis.log.

person Vineet Reynolds    schedule 10.09.2009
comment
привет, как я уже упоминал ниже, я уже изменил конфигурацию, поэтому меня это больше не беспокоит. Я все еще проверял наличие файла конфигурации, но безуспешно. Знаете ли вы, является ли LogHandler.writeToConsol = true настройкой по умолчанию? Это объяснило бы поведение. - person FrankS; 10.09.2009
comment
Из источника Axis я сделал вывод, что это не по умолчанию. - person Vineet Reynolds; 10.09.2009

Хорошо, после попытки найти лучшее решение единственным реальным способом было проверить старый устаревший код и превратить все вызовы System.out в реальные операторы ведения журнала (в любом случае, намного лучше), а затем просто отфильтровать оставшиеся сообщения STDOUT в другой журнал файл.

Одной из основных причин, похоже, является сам Jboss. Это обсуждение из списка рассылки axis2 объясняет почему: Ах, но вы не упомянули, что используете jboss! Это в значительной степени заставляет вас использовать их родительскую конфигурацию log4. В этом случае игнорируйте регистрацию оси 2 и смотрите:

~ / jboss / сервер / по умолчанию / conf / log4j.xml

Здесь вам нужно ограничить категории. Например, у вас есть:

<category name="org.apache">
  <priority value="INFO"/>
</category>

Вы можете оставить все как есть и просто выгрузить журналы из server.log.

Я попытался установить категорию, но безуспешно. Я предполагаю, что это из-за различий между осью и осью 2. Таким образом, единственным оставшимся решением было пойти по правильному пути и просто не использовать STDOUT в своем собственном коде ;-)

person FrankS    schedule 19.08.2009

Во-первых, вы захотите проверить, что ваша конфигурация log4j действительно читается - я помню, что в прошлом, по крайней мере, одна ось jar (я думаю, что это могло быть axis-ant.jar) была виновата в объединении своего собственного log4j.properties . Возможно, log4j читает файл конфигурации, отличный от вашего, поэтому ваши усилия по настройке конфигурации бессмысленны!

Вы можете включить системные свойства -Dlog4j.debug, чтобы log4j выводил стандартный файл конфигурации, который читается. При необходимости вы можете использовать -Dlog4j.configuration=<file>, чтобы указать на ваш собственный файл.

Кроме того, я не думаю, что это вызывает у вас проблемы, но почему вы устанавливаете для аддитивности значение false?

person matt b    schedule 07.08.2009
comment
Я проверил флягу оси, но она включала только файл с именем simplelog.properties, я добавлю это к вопросу. Однако изменение этого не помогло. Что касается аддитивности, это остаток от c&p и упрощения, я его тоже удалил. Я также загляну в системное свойство. - person FrankS; 07.08.2009
comment
аддитивность должна быть ложной, если вы пытаетесь ограничить уровень ведения журнала только ошибкой, иначе строка практически не будет иметь никакого эффекта, если корневой уровень более инклюзивный. - person Yishai; 07.08.2009

Проблема в том, что Axis не использует Log4j для регистрации этого сообщения, поэтому попытки изменить уровень ведения журнала log4j для этого класса неуместны. Axis использует System.out.println.

Единственное, о чем я могу думать (что действительно неприятно, учитывая побочные эффекты), - это полностью отключить выход из режима STDOUT. Вероятно, подойдет установка приоритета «Выкл.».

Единственное реальное решение - исправить Axis и исправить код, чтобы не перекачивать xml в System.out, а вместо этого использовать механизм ведения журнала - тогда вы можете его контролировать.

person Yishai    schedule 07.08.2009
comment
Можете ли вы указать, какой класс в Axis это делает? Звучит очень странно - person matt b; 07.08.2009
comment
Я не знаю. Если STDOUT регистрирует XML, либо Axis делает это, либо FrankS делает это и думает, что Axis это делает. JBoss перенаправляет любые вызовы System.out в журналы по умолчанию (хотя есть способы отключить это). - person Yishai; 07.08.2009

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

person Vijay Kumar    schedule 18.10.2010