Ведение журнала приложения в WildFly 9.0.1 FINAL (SL4J + Logback)

Я следил за некоторыми статьями и пытался найти решение, следуя некоторым похожим вопросам SO, но все еще не могу это сделать - мой файл журнала не создается нигде, где я его искал.

Моя цель состоит в том, чтобы рабочее ведение журнала было включено в приложение, а не использовало ведение журнала конкретного поставщика. Моя текущая ситуация следующая:

Я создал jboss-deployment-structure.xml внутри каталога MyEAR/META-INF со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <!-- it only affects single deployment -->
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>

Затем я создал logback.xml также в каталоге MyEAR/META-INF и со следующей конфигурацией:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="TMP_FILE" class="ch.qos.logback.core.FileAppender">
        <file>app.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
    </encoder>
</appender>

<root level="TRACE">
    <appender-ref ref="TMP_FILE" />
</root>

My dependencies are specified in parent POM file and look like this:

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.3</version>
    </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.3</version>
        </dependency>
    </dependencies>

В результате создается папка MyEAR/lib, в которой хранятся эти три файла JAR.

Я хотел бы сохранить эту конфигурацию ведения журнала на уровне EAR, чтобы ее могли использовать все модули EJB и WAR.

Есть ли что-то, чего мне не хватает, чтобы заставить его работать?


person Kousalik    schedule 01.09.2015    source источник


Ответы (1)


Вам также потребуется исключить подсистему ведения журнала для каждого подразвертывания. Что-то типа:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <!-- it only affects single deployment -->
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
    </deployment>
    <sub-deployment name="mywar.war">
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
    </sub-deployment>
    <sub-deployment name="myejb.jar">
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
    </sub-deployment>
</jboss-deployment-structure>
person James R. Perkins    schedule 01.09.2015
comment
К сожалению, без разницы. Я включил все модули так, как вы предложили, но ведение журнала по-прежнему идет только в стандартный журнал WildFly (как stdout, так и server.log). - person Kousalik; 01.09.2015
comment
Хм... ...я мало что знаю о logback, но похоже, что он не настраивается. Может быть, попробуйте просто поместить его в свой файл WAR, чтобы посмотреть, настроит ли он его тогда. Я не уверен, где он ищет файлы конфигурации. - person James R. Perkins; 01.09.2015
comment
Ну, он использует конфигурацию WildFly и его журналы, поэтому я бы сказал, что эти исключения почему-то не работают, потому что они должны отключать эту связь. Постараюсь переместить их по моим модулям, как вы сказали. - person Kousalik; 02.09.2015
comment
Исключение подсистемы ведения журнала только останавливает работу процессоров развертывания, которые просто добавляют зависимости, ищут файлы конфигурации ведения журнала и т. д. Ведение журнала должно по-прежнему работать, даже если вы оставляете подсистему ведения журнала отключенной. - person James R. Perkins; 02.09.2015