Переопределение регистрации в WildFly

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

My Logback.xml owrking on tomcat

<?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>

Ответы

Ответ 1

Вы можете использовать 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 отключит подсистему ведения журнала для вашего развертывания. Ниже приведен пример файла:

<jboss-deployment-structure>
  <deployment>
     <!-- exclude-subsystem prevents a subsystems deployment unit processors running on a deployment -->
     <!-- which gives basically the same effect as removing the subsystem, but it only affects single deployment -->
     <exclude-subsystems>
        <subsystem name="logging" />
    </exclude-subsystems>
  </deployment>
</jboss-deployment-structure>

Ответ 2

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

Сначала создайте файл jar, содержащий этот класс: https://gist.github.com/xiaodong-xie/219491e0b433f8bd451e

Затем поместите этот файл jar в "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/modules/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 следующим образом:

        <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.Final/standalone/configuration".

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

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

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

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

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

Поместите 2 файла журнала ошибок в модуль "jboss.logmanager" и добавьте "-Dorg.jboss.logging.provider = slf4j" в файл "standalone.sh" в той же позиции.

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

Получайте удовольствие.:-)