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

Jakarta ee WildFly 9.0.1 FINAL中特定于应用程序的日志记录(SL4J+Logback),jakarta-ee,logging,jboss,wildfly,ear,Jakarta Ee,Logging,Jboss,Wildfly,Ear,我阅读了一些文章,并试图通过一些类似的SO问题找到解决方案,但仍然无法做到这一点——我的日志文件并没有在我搜索的任何地方创建 我的目标是在应用程序中捆绑工作日志,而不是使用特定于供应商的日志。我目前的情况如下: 我在MyEAR/META-INF目录中创建了jboss-deployment-structure.xml,内容如下: <?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> &

我阅读了一些文章,并试图通过一些类似的SO问题找到解决方案,但仍然无法做到这一点——我的日志文件并没有在我搜索的任何地方创建

我的目标是在应用程序中捆绑工作日志,而不是使用特定于供应商的日志。我目前的情况如下:

我在MyEAR/META-INF目录中创建了jboss-deployment-structure.xml,内容如下:

<?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>
我的依赖项在父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模块都可以使用它


要使它工作起来,我还缺少什么吗?

您还需要为每个子部署排除日志子系统。比如:

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

不幸的是没有区别。我按照您建议的方式包括了所有模块,但是日志记录仍然只进入标准的WildFly日志,包括stdout和server.log.Hmm。。。我对logback了解不多,但看起来它没有被配置。也许试着把它放在WAR文件中,看看它是否配置了它。我不确定它在哪里查找配置文件。嗯,它使用WildFly配置及其日志,所以我想说这些排除不起作用,因为它们应该禁用此关系。将尝试像您所说的那样在我的模块中移动这些。排除日志子系统只会停止部署处理器的运行,这只会添加依赖项、查找日志记录配置文件等。即使关闭日志子系统,日志记录仍应工作。
<?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>