【发布时间】:2019-03-01 17:30:48
【问题描述】:
我有一个包含 EAR、WAR 和 EJB 包的 Java EE 应用程序。
我通过在 EJB 类中定义 @Produces 方法来配置 logback,如下所示:
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文件以及放在哪里?
【问题讨论】:
标签: java jakarta-ee jboss wildfly logback