【问题标题】:Application specific logging in WildFly 9.0.1 FINAL (SL4J + Logback)WildFly 9.0.1 FINAL (SL4J + Logback) 中的应用程序特定日志记录
【发布时间】:2015-09-01 17:07:33
【问题描述】:

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

然后我也在MyEAR/META-INF 目录中创建了logback.xml,并具有以下配置:

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

我还缺少什么让它工作吗?

【问题讨论】:

    标签: jakarta-ee logging jboss wildfly ear


    【解决方案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>
    

    【讨论】:

    • 不幸的是没有区别。我按照您建议的方式包含了所有模块,但日志记录仍然只进入标准 WildFly 日志(stdout 和 server.log)。
    • 嗯... ...我对 logback 了解不多,但看起来它没有被配置。也许试着把它放在你的 WAR 文件中,看看它是否配置了它。我不确定它在哪里寻找配置文件。
    • 嗯,它使用 WildFly 配置及其日志,所以我会说这些排除在某种程度上不起作用,因为它们应该禁用这种关系。将尝试像你说的那样在我的模块中移动这些。
    • 排除日志子系统只会停止部署处理器的运行,它只是添加依赖项、查找日志配置文件等。即使您关闭日志子系统,日志也应该仍然有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2011-06-24
    • 1970-01-01
    • 2019-05-11
    • 2015-10-30
    相关资源
    最近更新 更多