2014-02-18 4 views
15

Я использовал tomcat и просто переопределял систему регистрации по умолчанию. Как включить ведение журнала с помощью logback на wildfly в моем приложении Spring?Переопределение регистрации в WildFly

Мои Logback.xml owrking на

кот
<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
      <level>ERROR</level> 
      <onMatch>ACCEPT</onMatch> 
      <onMismatch>DENY</onMismatch> 
     </filter> 
     <encoder> 
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern> 
     </encoder> 
    </appender> 

    <logger name="org.springframework" level="WARN" /> 
    <logger name="com.citronium.planstery" level="INFO" /> 
    <logger name="org.apache.http.impl.conn.tsccm" level="ERROR" /> 

    <root level="INFO"> 
     <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 
+0

Я не могу точно ответить на ваши вопросы, но я могу дать вам указатели. Проверьте эту [нить] (https://community.jboss.org/thread/222437?tstart=0). Это не слишком трудно переопределить JBossLogging. Благодаря своей новой модульной архитектуре загрузки классов она стала довольно значительной накладной, чтобы переопределить структуру ведения журнала. У нас были аналогичные проблемы, и мы решили пойти с комбинацией SLf4J + JBossLogging. – Vikram

+0

Максим посмотреть дату. Мой вопрос был ранее –

ответ

30

Вы можете использовать Logback настроить ведение журнала в приложении. Вы не можете использовать logback для настройки ведения журнала для сервера.

Чтобы использовать логин в вашей конфигурации, вам необходимо изменить add-logging-api-dependencies на false или создать jboss-deployment-structure.xml, который не включает подсистему. Вам также необходимо включить logback и slf4j в развертывание.

Первый вариант изменения add-logging-api-dependencies - это глобальная настройка для всех развертываний. Команда последующего CLI изменит значение:

/subsystem=logging:write-attribute(name=add-logging-api-dependencies,value=false) 

Эта опция просто не добавляет какую-либо из зависимостей каротажных в implicit для развертывания.

Второй вариант использования jboss-deployment-structure.xml отключит подсистему ведения журнала только для вашего развертывания. Ниже приведен пример файла:

+0

После использования jboss-deployment-structure.xml я получаю это исключение: вызвано: java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log; – Sujoy

+0

Удостоверьтесь, что вы включили общедоступность в качестве библиотеки в своем развертывании или добавили явную зависимость org.apache.commons.logging с jboss-deployment-structure.xml. Тем не менее, почему исключить ведение журнала, если вы используете общедоступные записи? –

+0

Я не использую ведение журнала сообщества. Я использую log4j. Мой журнал не работал. После добавления подсистемы exclude и добавления commons-logging.jar в мою войну он начал работать. Спасибо Джеймсу. Но я до сих пор этого не понимаю. Где я могу получить дополнительную информацию? Повсюду он так запутан. Я путаюсь. – Sujoy

4

Вот как мы делаем это, кстати, мы используем wildfly-8.1.0-Final.

Во-первых, сделать файл банку, содержащую этот класс: https://gist.github.com/xiaodong-xie/219491e0b433f8bd451e

Затем положить эту банку файл в «wildfly-8.1.0.Final/modules/system/layers/base/org/jboss/logmanager/main ", и добавьте ссылку на этот файл jar в файле module.xml в той же самой папке.

Затем введите «logback-classic-1.1.2.jar» и «logback-core-1.1.2.jar» (вы можете использовать любую выбранную версию логина) в «wildfly-8.1.0.Final/ модули/system/layers/base/org/jboss/logmanager/main "и ссылаются на эти 2 файла jar в файле module.xml.

Добавьте следующее в «подсистемы: ведение журнала» в standalone.xml вы используете:

<custom-handler name="logback" class="org.slf4j.bridge.SLF4JBridgeHandler" module="org.jboss.logmanager"></custom-handler> 

И ссылки этот обработчик в элементе корневого регистратора следующее:

 <root-logger> 
      <level name="INFO"/> 
      <handlers> 
       <handler name="CONSOLE"/> 
       <handler name="logback"/> 
      </handlers> 
     </root-logger> 

Здесь является примером logback.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/> 

<appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${JBOSS_HOME}/standalone/log/server-logback.log</file> 
    <append>true</append> 
</appender> 
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> 
    <appender-ref ref="LOGFILE"/> 
</appender> 
<root level="INFO"> 
    <appender-ref ref="ASYNC"/> 
</root> 
</configuration> 

И поместить этот файл в logback.xml «wildfly-8.1.0.Fina l/standalone/configuration ".

Добавьте в "standalone.sh" или его эквивалент в папку "wildfly-8.1.0.Final/bin".

-Dlogback.configurationFile=file:$JBOSS_CONFIG_DIR/logback.xml 

Только под "-Dlogging.configuration = файл: $ JBOSS_CONFIG_DIR/logging.properties" линии. В файле standalone.sh есть 2 места.

================================================================================================================================== ===================================

Или вы можете сделать это проще. :)

Поместите 2 файла журнала регистрации в модуль «jboss.logmanager» и добавьте «-dorg.jboss.logging.provider = slf4j» в файл «standalone.sh» в том же положении.

Я обнаружил, что некоторые из них пропали без вести, если это произойдет, так как сама Wildfly по-прежнему использует свой собственный механизм ведения журнала, если это происходит.

Удачи. :-)

+2

Возможно ли включить конфигурацию в ваше приложение? Как поместить его в EAR/WAR-файл при доставке? Кажется, это правильный путь для меня, если вы отключите регистратор через 'jboss-deployment-structure.xml'. – Rob

Смежные вопросы