未取回Logback XML

问题描述

我正在尝试为现有的Logback应用实现EAP7.2

JBoss EAP 7.2.8.GA (WildFly Core 6.0.27.Final-redhat-00001)

当我运行gradle clean build时,它将在该位置创建正确的日志并记录所有测试结果。但是,当我部署该应用程序时,它根本不使用logback.xml,并且不会创建日志。部署应用程序时,只有server.log处于活动状态,因为它是认的jboss设置。

我如何实现回滚,以便应用程序在部署时知道要使用它?我检查了在适当的WEB-INF/classes/

下创建logback.xml的战争

EAR build.gradle

dependencies {
    implementation 'org.slf4j:slf4j-api:1.7.30'
    implementation 'ch.qos.logback:logback-classic:1.2.3'
    implementation 'ch.qos.logback:logback-core:1.2.3'
}

jboss排除项

        <exclusions>
            <!-- don't want to integrate with server logging yet -->
            <module name="org.jboss.logging"/>
            <module name="org.slf4j"/>
            <module name="org.slf4j.impl"/>
        </exclusions>

server.log

2020-09-25 16:28:05,188 INFO  [stdout] (QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager) 16:28:05.187 [QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager] DEBUG org.quartz.impl.jdbcjobstore.StdRowLockSemaphore - Lock 'STATE_ACCESS' given to: QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager
2020-09-25 16:28:05,188 INFO  [stdout] (QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager) 16:28:05.188 [QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager] DEBUG org.quartz.impl.jdbcjobstore.StdRowLockSemaphore - Lock 'TRIGGER_ACCESS' is desired by: QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager
2020-09-25 16:28:05,189 INFO  [stdout] (QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager) 16:28:05.188 [QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager] DEBUG org.quartz.impl.jdbcjobstore.StdRowLockSemaphore - Lock 'TRIGGER_ACCESS' is being obtained: QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager
2020-09-25 16:28:05,189 INFO  [stdout] (QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager) 16:28:05.189 [QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager] DEBUG org.quartz.impl.jdbcjobstore.StdRowLockSemaphore - Lock 'TRIGGER_ACCESS' given to: QuartzScheduler_AppScheduler-<server>11601051265073_ClusterManager

logback.xml

<configuration debug="true" scan="true">

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${jboss.server.log.dir}/logs.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${jboss.server.log.dir}/logs.log.%d{yyyy-MM-dd}.gz</FileNamePattern>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date %level [username:%X{username}][%thread] %logger [%file:%line] %msg%n
            </pattern>
        </encoder>
    </appender>

    
    <logger name="org.quartz" level="INFO"/>

    <root level="ALL">
        <appender-ref ref="FILE"/>
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

解决方法

您应该在jboss-deployment-structure.xml中排除日志子系统,并设置org.jboss.logging.provider系统属性。

您可以通过JBoss EAP 7关注steps to configure LogBack上的Red Hat文章

还可以查看configuring external logging的各种选项。