在WildFly 14中将logback.xml放在Java EE应用程序中的位置

时间:2019-03-01 17:30:49

标签: java java-ee jboss wildfly logback

我有一个包含EAR,WAR和EJB软件包的Java EE应用程序。

我通过在EJB类中定义logback方法来配置@Produces,如下所示:

import org.slf4j.LoggerFactory;
import org.slf4j.Logger;

@Named
@Singleton
public class LoggerProducer {

    @Produces
    public Logger produceLogger(InjectionPoint injectionPoint) {
        return LoggerFactory.getLogger(injectionPoint.getMember()
                                       .getDeclaringClass().getName());
    }

}

这很好,将接口注入

@Inject
private Logger logger;

并使用

登录
logger.error("This is the error");

我的pom.xml中有这些依赖项:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

现在,我正尝试在部署中包含一个logback.xml文件,我将其添加到EJB类路径中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </layout>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

但是它不起作用,它以标准/默认格式记录。

我将以下jboss-deployment-structure.xml文件添加到EJB / META-INF文件夹以排除日志记录:

<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="logging"/>
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>

但是它也不起作用。如果将jboss-deployment-structure.xml放在EAR / META-INF中,则在启动时会出现以下错误(仅指向WAR类):

  

org.jboss.weld.exceptions.DeploymentException:WELD-001408:   带限定符@Default的Logger类型的依赖关系不令人满意

logback.xml文件放在哪里?如何配置jboss-deployment-structure.xml文件及其放置位置?

1 个答案:

答案 0 :(得分:0)

将其放在资源文件夹或运行时类路径上的任何文件夹中(CLASSPATH系统变量应具有一个条目)。例如,使您的“ make”文件将其复制到WEB-INF / classes(虽然不是一个很好的选择)。