我有一个包含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
文件及其放置位置?
答案 0 :(得分:0)
将其放在资源文件夹或运行时类路径上的任何文件夹中(CLASSPATH系统变量应具有一个条目)。例如,使您的“ make”文件将其复制到WEB-INF / classes(虽然不是一个很好的选择)。