Отключить вход в систему Axis log4j в jboss - PullRequest
0 голосов
/ 07 августа 2009

У меня есть небольшое приложение, которое загружает картинки на другой сайт через веб-сервис. Моя текущая проблема заключается в том, что 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

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

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

Приветствия
Frank

Ответы [ 5 ]

2 голосов
/ 10 сентября 2009

Это может быть немного поздно в тот день, но проблема, похоже, не в том, что сама регистрация ведется в 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.

1 голос
/ 19 августа 2009

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

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

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

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

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

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

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

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

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

0 голосов
/ 07 августа 2009

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

Единственное, о чем я могу подумать (что на самом деле нехорошо, учитывая побочные эффекты), это вообще отключить регистрацию STDOUT. Вероятно, установка приоритета на выкл.

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

0 голосов
/ 07 августа 2009

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

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

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

...