WildFly 9.0.1 FINAL中的应用程序特定日志记录(SL4J + Logback)

时间:2015-09-01 17:07:34

标签: java-ee logging jboss wildfly ear

我关注了一些文章并尝试通过遵循一些类似的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>

我的依赖项在父POM文件中指定,如下所示:

<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模块都可以使用它。

我有什么遗漏才能让它发挥作用吗?

1 个答案:

答案 0 :(得分:0)

您还需要为每个子部署排除日志记录子系统。类似的东西:

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